C# 在面向使用者代码的NuGet库中使用源生成器
我正试图用新的源代码生成器将我的许多运行时反射内容转移到AOT,但是我面临一些问题。 让我先谈谈我的要求C# 在面向使用者代码的NuGet库中使用源生成器,c#,code-generation,c#-8.0,C#,Code Generation,C# 8.0,我正试图用新的源代码生成器将我的许多运行时反射内容转移到AOT,但是我面临一些问题。 让我先谈谈我的要求 该库的代码需要以.NET5为目标,但不是源代码生成器本身,尽管这是一个很好的选择,但根据 源生成器本身不需要与原始NuGet软件包分开安装 现在来看一个更直观的例子,假设包a是NuGet库,它应该包含包a用户的代码。包B,包含源生成器的包应该再次在用户代码库而不是包a上执行。包B应该与包a一起提供 为什么将源代码生成器与库一起提供有这么大的意义?SG将生成库本身所需的代码 在阅读文档时,
- 该库的代码需要以.NET5为目标,但不是源代码生成器本身,尽管这是一个很好的选择,但根据
- 源生成器本身不需要与原始NuGet软件包分开安装
为什么将源代码生成器与库一起提供有这么大的意义?SG将生成库本身所需的代码
在阅读文档时,我可能跳过了一些内容,但我就是想不出来,假设这是可能的。“为什么将源代码生成器与库一起提供有这么大的意义?”-因为(使用
npm
术语)它是一个“开发依赖项”(即构建项目所需的内容),不是运行时依赖项。通常最好将它们分开,否则最终用户的机器上会有太多的活动部件,例如。FWIW,NuGet正在努力为开发依赖项添加一流的支持,在此之前,还有一些变通方法和替代方法:@Dai在我的例子中,我正在开发一个ORM,如果仅仅为了核心模块的工作而手动安装另一个包,那将是一次非常痛苦的经历。然而,如果我设置developmentDependency=true
,它将包含库本身的分析器,对吗?因为IIRC已经是一个东西了,有些软件包确实安装了IncludeAssets
tag。