gpt4 book ai didi

c# - 在同一解决方案中使用 Roslyn 代码分析器

转载 作者:太空狗 更新时间:2023-10-30 00:47:48 27 4
gpt4 key购买 nike

我有一个由多个 .NET Core 项目组成的解决方案。我有一些我想执行的代码分析任务仅适用于此解决方案,因此将它们放在单独的存储库/解决方案中没有意义。使用适当的模板,我为分析器创建了三个项目:

  • 例子.分析器
  • 示例.分析器.测试
  • Example.Analyzer.Vsix

Example.Analyzer.Vsix 无法编译,因为 Visual Studio 需要 .NET Framework,但我的目标是 .NET Core 以供跨平台使用。现在,我忽略了那个项目,但我打算删除它。 Example.Analyzer 和 Example.Analyzer.Test 都针对 netcoreapp3.0,以及解决方案中的所有其他项目。

我已经编写了分析器并且测试通过了。但是,我不确定如何实际使用其他项目中的这些分析器。我尝试通过 ProjectReference 添加 Example.Analyzer 作为依赖项,但这似乎无法启用分析器。

最佳答案

从字面上看,昨天我想为我正在开发的产品创建一组分析器,但在不同的解决方案中执行它并放置一个私有(private) Nuget 只是为了我可以使用它们是没有意义的。我能够找到一个完美的解决方案:

  1. 在将要分析的项目中,添加对包含分析器的项目的引用。
  2. 编辑项目文件,找到您刚刚创建的 ProjectReference 标记并添加属性 ReferenceOutputAssembly=falseOutputItemType=Analyzer 。它看起来应该类似于:
<ProjectReference Include="..\..\analyzers\AnalyzersProject\AnalyzersProject.csproj">
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<OutputItemType>Analyzer</OutputItemType>
</ProjectReference>

这就是所有需要的。现在,一旦构建了您的解决方案,您的新分析器就应该可以工作了。唯一需要注意的是 Visual Studio 似乎缓存了分析器,因此如果您更改它,您可能需要关闭并重新打开 VS 以使新的/更改的分析器工作。

虽然我很想这样做,但我不能把全部功劳都归功于此。昨天我确实非常接近这个解决方案,但今天早上我发现了一个 blog post稍微简化了一些事情(这就是我从上面得到最终解决方案的地方,我的有一些“不必要的”行)

在我的案例中,我做的一件事是利用项目文件夹中的“Directory.Build.props”文件来添加该项目引用。这样,在该文件夹中创建的所有项目都会自动使用我创建的分析器。

关于c# - 在同一解决方案中使用 Roslyn 代码分析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55244265/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com