打包csproj时如何从NuGet包中排除程序集?

nat*_*ter 4 .net msbuild nuget

我想使用“ dotnet pack”来生成一个nuget包,但是我不想包含汇编文件。我的项目没有代码,但是调用“ dotnet pack”会创建一个带有空程序集的程序包。

如何使用csproj和dotnet.exe执行此操作?

nat*_*ter 6

您有两种选择:

  1. 使用nuspec文件而不是csproj。NuGet对csproj包的支持不如直接使用nuspec灵活。请参阅https://docs.microsoft.com/zh-cn/nuget/quickstart/create-and-publish-a-package#create-the-nuspec-package-manifest-file
  2. 在您的csproj文件中,设置属性<IncludeBuildOutput>false</IncludeBuildOutput>(添加到PropertyGroup部分)。这指示“ Pack”目标不要将程序集添加到程序包中。有关更多详细信息,请参见https://docs.microsoft.com/zh-cn/nuget/schema/msbuild-targets

  • 请注意,您可以将第二种方法与“&lt;Project Sdk="Microsoft.Build.NoTargets/1.0.26"/&gt;”结合使用,以避免首先构建空程序集。 (3认同)
  • 如果只想排除一些文件,则IncludeBuildOutput的用法如何? (2认同)