Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在面向使用者代码的NuGet库中使用源生成器_C#_Code Generation_C# 8.0 - Fatal编程技术网

C# 在面向使用者代码的NuGet库中使用源生成器

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将生成库本身所需的代码 在阅读文档时,

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

  • 该库的代码需要以.NET5为目标,但不是源代码生成器本身,尽管这是一个很好的选择,但根据
  • 源生成器本身不需要与原始NuGet软件包分开安装
现在来看一个更直观的例子,假设包a是NuGet库,它应该包含包a用户的代码。包B,包含源生成器的包应该再次在用户代码库而不是包a上执行。包B应该与包a一起提供


为什么将源代码生成器与库一起提供有这么大的意义?SG将生成库本身所需的代码


在阅读文档时,我可能跳过了一些内容,但我就是想不出来,假设这是可能的。

“为什么将源代码生成器与库一起提供有这么大的意义?”-因为(使用
npm
术语)它是一个“开发依赖项”(即构建项目所需的内容),不是运行时依赖项。通常最好将它们分开,否则最终用户的机器上会有太多的活动部件,例如。FWIW,NuGet正在努力为开发依赖项添加一流的支持,在此之前,还有一些变通方法和替代方法:@Dai在我的例子中,我正在开发一个ORM,如果仅仅为了核心模块的工作而手动安装另一个包,那将是一次非常痛苦的经历。然而,如果我设置
developmentDependency=true
,它将包含库本身的分析器,对吗?因为IIRC已经是一个东西了,有些软件包确实安装了
IncludeAssets
tag。