首页 > 解决方案 > 在面向消费者代码的 NuGet 库中使用源生成器

问题描述

我正在尝试使用新的源生成器将我的许多运行时反射内容移动到 AOT,但是我面临一些问题。让我先谈谈我的要求。

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

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

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

标签: c#code-generationc#-8.0

解决方案


事实证明它比预期的要容易。可以通过将 Source Generator 引用为带有PackagePath父项目的 .csproj 文件中的参数的 Analyzer 来将 Source Generator 发送到同一个 NuGet 包中。

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

推荐阅读