【问题标题】:Roslyn Visual Studio 2017, Microsoft.CodeAnalysis Version 2.6.1Roslyn Visual Studio 2017,Microsoft.CodeAnalysis 版本 2.6.1
【发布时间】:2018-03-05 10:12:51
【问题描述】:

我们正在 Microsoft.CodeAnalysis 2.6.1 平台上编写 Roslyn Visual Studio 2017 插件。

  • 实际状态:

    我们创建了一个 VSIX 项目并编写了一些简单的 DiagnosticAnalyzer 子类,这些子类在将资产添加到 source.extension.vsixmanifest 文件后正确加载(请参阅 https://msdn.microsoft.com/en-us/library/ee943167.aspx )。

  • 当前状态: 我们的插件还应该能够进行一些简单的重构。所以我们创建了 CodeFixProvider 的子类。 不幸的是 CodeFixProvider 的钩子方法永远不会被调用。有人知道为什么吗?

这是我的代码:


[ExportCodeFixProvider(LanguageNames.CSharp), Shared]
    public sealed class BooleanComparisonCodeFixProvider : CodeFixProvider
    {
        public override ImmutableArray FixableDiagnosticIds {
              get { // never gets called }
        }

        public override Task RegisterCodeFixesAsync(CodeFixContext context)
        {
             // never gets called
        }

        public sealed override FixAllProvider GetFixAllProvider()
        {
             // never gets called
        }
    }

欢迎 MjeOsX

【问题讨论】:

    标签: visual-studio visual-studio-2017 roslyn code-analysis


    【解决方案1】:

    您需要添加 [ExportCodeFixProvider(LanguageNames.Whatever)] 以将您的类导出到 Visual Studio 的 MEF 容器。

    【讨论】:

    • 我已经这样做了,但这没有用。谢谢你。我在问题部分添加了代码。
    • 您是否将 VSIX 设置为将项目部署为 MEF?其他 MEF 导出是否有效?检查调试,模块,看看你是否加载了多个版本的 Roslyn。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 2017-08-16
    • 1970-01-01
    相关资源
    最近更新 更多