在针对消费者代码的 NuGet 库中使用源生成器

Using Source Generators in a NuGet library targeting consumer code

我正在尝试使用新的源代码生成器将我的很多运行时反射内容移动到 AOT,但是我遇到了一些问题。 先说说我的需求吧

现在来看一个更直观的例子,假设包 A 是 NuGet 库,它应该包含包 A 的用户的代码。包 B,包含源代码生成器的包,它应该再次在用户代码上执行-base 而不是包裹 A。包裹 B 应与包裹 A 一起运送。

为什么将 Source Generator 与库一起运送如此重要? SG 将生成库本身所需的代码。

我可能在阅读文档时跳过了某些内容,但是我无法弄明白,假设这是可能的。

事实证明比预期的要容易。通过在父项目的 .csproj 文件中使用 PackagePath 参数将源代码生成器引用为分析器,可以在同一个 NuGet 包中发布源代码生成器。

<ItemGroup>
    <None Include="Path\To\SourceGenerator\bin$(Configuration)\netstandard2.0\NameOfSourceGenerator.dll" Pack="true" PackagePath="analyzers/dotnet/cs" Visible="false" />
</ItemGroup>