Visual Studio 在间接关联的项目上运行的源生成器

k4ymrczo  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(102)

我已经构建了一个增量源代码生成器,并将其打包到一个nuget包中,以供不同的解决方案使用。我在我的“模型”项目中引用了它。问题是Models项目被我的解决方案中的许多其他项目引用。由于某些原因,源代码生成器在引用我的模型项目的每个项目上运行,即使它们没有引用我的源代码生成器的nuget包。我想知道这是为什么,以及如何阻止它发生。

nmpmafwu

nmpmafwu1#

我已经找到了答案,这个答案很简单。将PrivateAssets="all"添加到您的包引用。在我的例子中,它看起来像:
<PackageReference Include="MapGenerator.Generator" Version="0.3.5-beta" PrivateAssets="all"/>
我看到有几个地方说,如果你把一个源代码生成器打包成一个nuget包,就不需要做任何额外的考虑。这在我看来是一个相当大的一个虽然。
总之,如果希望源生成器仅在引用它的项目上运行,则必须添加PrivateAssets属性。

相关问题