【发布时间】:2020-07-19 20:59:55
【问题描述】:
我正在尝试将 Roslyn 分析器和代码修复提供程序添加到作为 nuget 包分发的现有项目 ApiEndpoints.csproj。
在新的 Visual Studio 实例中使用 nuget 包时,Analyzer 显然在工作,但相应的 Code Fix Provider 未出现在 Code Fixes 列表中。 如何排除故障并让我的代码修复提供程序正确注册到 Visual Studio?
我最初通过 Analyzer with Code Fix (.NET Standard) 项目模板在一个新项目中构建了 Analyzer & Code Fix Provider。当我将它捆绑到一个 nuget 包中、在本地部署并从一个新的 Studio 实例中使用它时,分析器可以工作并且代码修复提供程序会推荐一个解决方案:
但是,当我将 Analyzer 和 Code Fix Provider 类移动到与其他类捆绑的主 ApiEndpoints.csproj 时,似乎只有 Analyzer 注册,只有 Suppress 选项,我的 Code Fix Provider 不在名单:
ApiEndpoints.csproj:
到目前为止我已经尝试过:
-
我可以将托管 Analyzer/Fix 提供程序的 Visual Studio 调试器附加到使用它的不同 Studio 实例。 Analzyer 中的断点被击中,但 Code Fix Provider 中没有。所以我认为我的代码修复提供程序中的异常不会阻止注册。
-
我在
ApiEndpints.csproj与ApiEndpoints.Analyzers.csproj中逐行查看并对齐SuppressDependenciesWhenPacking(true)、GeneratePackageOnBuild(true)、IncludeBuildOutput(true)。这些更改没有帮助。 -
多次重新启动两个 Visual Studio 实例。最初使用分析器使用 nuget 包时,我发现分析器在重新启动 Visual Studio 之前不会显示。但是多次重启并没有修复 Code Fix Provider
-
更改了分析器的
DiagnosticId几次,并确保代码修复提供程序正在引用它。 -
从不同的项目(Analyzer with Code Fix (.NET Standard) vs Class Library)部署了相同的 Analyzer + CodeFixProvider。一个工作,另一个工作,这让我认为这不是代码修复提供程序的问题,而是某种注册/管道代码/配置。
总结
如何排除故障并让我的代码修复提供程序正确注册到 Visual Studio?
【问题讨论】:
标签: c# visual-studio roslyn roslyn-code-analysis