gpt4 book ai didi

c# - 如何使 Roslyn Analyzer 项目成为可传递依赖项?

转载 作者:行者123 更新时间:2023-12-04 12:00:14 24 4
gpt4 key购买 nike

我有一个依赖于源生成器才能正常工作的库。在 MyLibrary.csproj ,我像这样引用生成器。

<ItemGroup>
<ProjectReference
Include="..\MyLibrary.Generators\MyLibrary.Generators.csproj"
PrivateAssets="contentfiles;build"
ReferenceOutputAssembly="false"
OutputItemType="analyzer"/>
</ItemGroup>
我需要这个分析器引用是可传递的,即引用 MyLibrary 的项目应该得到 MyLibrary.Generators分析器传递。
像这样的简单引用似乎没有引用分析器,只有 MyLibrary
<ProjectReference Include="..\MyLibrary\MyLibrary.csproj" />
我想强调,我不是在找 MyLibrary.Generators作为常规程序集引用使用,但作为 Roslyn 分析器使用,因此我的源代码生成器可以在编译时按预期运行。

最佳答案

我在 GitHub 上收到了这个问题的答案.
库项目对生成器项目有以下引用就足够了:

  <ItemGroup>
<!-- Package the generator in the analyzer directory of the nuget package -->
<None Remove="$(OutputPath)/$(AssemblyName).Generator.dll" />
<None Include="$(OutputPath)/$(AssemblyName).Generator.dll" Pack="true" PackagePath="analyzers/dotnet/cs" Visible="false" />
</ItemGroup>
(我不确定 Remove 行是否有任何作用。这可能是不必要的。)
当库作为 NuGet 包使用时,生成器会自动包含为分析器,即分析器引用是可传递的。
但是,当通过项目引用(例如在库自己的单元测试项目中)使用库时,我们需要以下内容:
  <ItemGroup>
<ProjectReference Include="..\MyLibrary\MyLibrary.csproj" />
<ProjectReference Include="..\MyLibrary.Generator\MyLibrary.Generator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
</ItemGroup>
原始帖子中的示例都处理项目引用。不幸的是,从我收集到的信息来看,对分析器的传递项目引用似乎是不可能的。

关于c# - 如何使 Roslyn Analyzer 项目成为可传递依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66328676/

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