c# - 在面向消费者代码的 NuGet 库中使用源生成器
问题描述
我正在尝试使用新的源生成器将我的许多运行时反射内容移动到 AOT,但是我面临一些问题。让我先谈谈我的要求。
- 该库的代码需要针对 .NET 5,但不是针对 Source Generator 本身,尽管拥有它会很不错,但根据MS 开发博客,目前还不可能。
- 不应要求源生成器本身与原始 NuGet 包分开安装。
现在来看一个更直观的例子,想象包 A 是 NuGet 库,它应该包含包 A 的用户的代码。包 B,包含源生成器的包,它应该再次在用户代码库上执行,而不是在包裹 A。包裹 B 应与包裹 A 一起运送。
为什么将 Source Generator 与库一起提供如此重要?SG 将生成库本身所需的代码。
我可能在阅读文档时跳过了一些内容,但是我无法弄清楚,假设这是可能的。
解决方案
事实证明它比预期的要容易。可以通过将 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>
推荐阅读
- python-3.x - 了解梯度下降的类型及其在 Pytorch 框架中的计算方式并使其更具动态性
- scala - 如何在 Spark 中将多个列合并为 MapType?
- ssl - 如何在带有 SSL 的 nginx 反向代理后面正确运行 BeEF
- java - 如何为 JAR 文件 paermanenlty 设置类路径
- python-3.x - shutil.copy 在 os.makedirs 之后失败
- javascript - 反应本机 ArrayIndexOutOfBoundsException
- javascript - 将 Jquery 函数导入 React
- php - 在数据库表上插入表单数据取决于从下拉列表中选择的值
- python - 将 (x,x) 转换为数据框 pandas python
- c++ - 为什么虚函数不能是静态的和全局的?