Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将CodeFixProvider添加到现有Nuget包_C#_Visual Studio_Roslyn_Roslyn Code Analysis - Fatal编程技术网

C# 将CodeFixProvider添加到现有Nuget包

C# 将CodeFixProvider添加到现有Nuget包,c#,visual-studio,roslyn,roslyn-code-analysis,C#,Visual Studio,Roslyn,Roslyn Code Analysis,我正在尝试将一个Roslyn分析器和代码修复提供程序添加到一个现有的项目中,apidendpoints.csproj,该项目作为nuget包分发 在新的VisualStudio实例中使用nuget包时,分析器显然正在工作,但相应的代码修复提供程序不会出现在代码修复列表中如何排除故障并使代码修复提供程序正确注册到Visual Studio? 我最初通过Analyzer with Code Fix(.NET Standard)项目模板在一个新项目中构建Analyzer&Code Fix提供程序。当我

我正在尝试将一个Roslyn分析器和代码修复提供程序添加到一个现有的项目中,apidendpoints.csproj,该项目作为nuget包分发

在新的VisualStudio实例中使用nuget包时,分析器显然正在工作,但相应的代码修复提供程序不会出现在代码修复列表中如何排除故障并使代码修复提供程序正确注册到Visual Studio?

我最初通过Analyzer with Code Fix(.NET Standard)项目模板在一个新项目中构建Analyzer&Code Fix提供程序。当我将其捆绑到一个nuget包中,在本地部署,并从一个新的Studio实例使用它时,Analyzer会工作,代码修复提供程序会推荐一个解决方案:

apidendpoints.Analyzer.csproj

但是,当我将Analyzer和Code Fix Provider类移动到与其他类捆绑在一起的mainapidents.csproj时,似乎只有Analyzer注册,只有抑制选项,我的Code Fix Provider不在列表中:

apidendpoints.csproj

到目前为止,我所尝试的:
  • 我可以将承载Analyzer/Fix提供程序的Visual Studio调试器附加到使用它的Studio的其他实例。Analzyer中的断点被命中,但代码修复提供程序中没有任何断点。因此,我不认为我的代码修复提供程序中存在阻止注册的异常

  • 我在
    ApiEndpints.csproj
    vs
    ApiEndpints.Analyzers.csproj
    中逐行查看,并在打包时对齐
    抑制依赖项(true),
    生成包构建
    (true),
    包含ILDDOUT
    (true)。这些改变没有帮助

  • 多次重新启动两个Visual Studio实例。当最初使用带有分析器的nuget包时,我看到分析器在Visual Studio重新启动之前不会显示。但是多次重新启动并没有修复代码修复提供程序

  • 更改分析仪的
    诊断ID
    几次,并确保代码修复提供程序正在引用它

  • 从不同的项目部署了相同的Analyzer+CodeFixProvider(Analyzer with Code Fix(.NET Standard)vs类库)。在其中一个中工作,但在另一个中不工作,这使我认为这不是代码修复提供程序的问题,而是某种注册/管道代码/配置

  • 总结
    如何排除故障并使代码修复提供程序正确注册到Visual Studio?

    您不应该将库和分析器/修复程序打包在同一个程序集中,甚至是同一个包中

    除了强制用户在运行时依赖于分析器/修复器及其依赖项之外,该工具不支持该用例

    您应该将它们打包在自己的包中,并让库包依赖于Analyzer/fixers包