我能够为我的扩展获取 Roslyn 分析器,但无法为相同的诊断获取 codeFix 提供程序

I am able to get the Roslyn analyzer for my extension but failed to get the codeFix provider for the same diagnostics

我创建了一个引用 Roslyn 分析器和代码修复库的 vsix 项目。我能够为我的扩展获取分析器,但未能为相同的诊断获取代码修复提供程序。

分析仪

namespace CSharpDiagnostics
{
    [DiagnosticAnalyzer(LanguageNames.CSharp)]
    public class AsyncMethodNameAnalyzer : SyntaxNodeAnalyzer
    {
        // Analyzer code, which I am able to debug and working fine.
    }
}

代码修复提供商

这是针对上述 AsyncMethodNameAnalyzer 的代码修复。 Export 属性似乎无法正常工作。

namespace CSharpDiagnostics
{
    [ExportCodeFixProvider(LanguageNames.CSharp, Name = nameof(AsyncMethodNameCodeFix))]
    public class AsyncMethodNameCodeFix : CodeFixProvider
    {
        public override ImmutableArray<string> FixableDiagnosticIds
        {
            get
            {
                return ImmutableArray.Create(AsyncMethodNameAnalyzer.DiagnosticId);
            }
        }

        public sealed override FixAllProvider GetFixAllProvider()
        {
            return WellKnownFixAllProviders.BatchFixer;
        }

        public override async Task RegisterCodeFixesAsync(CodeFixContext context)
        {
            // My code for fix provider
        }
    }
}

您必须确保在您的 vsixmanifest 文件中注册了 MEF 扩展。