为解决方案中的单个项目禁用 NuGet BuildPackage

Seb*_*ter 2 msbuild nuget

我们在解决方案和项目中使用标准 NuGet.targets 文件在构建时进行包更新和包创建。

现在的问题是:当我们像这样构建解决方案时:

msbuild MySolution.sln /P:Configuration=Release;BuildPackage=true;PackageOutputDir="..\CreatedPackages"
Run Code Online (Sandbox Code Playgroud)

然后 NuGet.targets 文件会为我们的解决方案中的所有项目构建包。因此,我们实际上最终也为我们的单元测试和集成测试项目提供了 Nuget 包,这是我们不想要的。

在这些项目中无条件设置属性<BuildPackage>false</BuildPackage>没有帮助,因为属性已经通过命令行设置,之后无法更改。我不想更改该nuget.targets文件。

所以问题是:如何防止解决方案中的特定项目创建包,而其他项目应该构建其包?

Nir*_*edi 6

通过在文件中提供<IsPackable>属性值,您可以忽略该项目,以免打包为 nuget 包false.csproj

<IsPackable>true</IsPackable>- 创建包

<IsPackable>false</IsPackable>- 不创建包

.csproj以下是您的文件的示例副本

<PropertyGroup>
   <OutputType>Exe</OutputType>
   <TargetFramework>netcoreapp3.1</TargetFramework>
   <PublishRepositoryUrl>false</PublishRepositoryUrl>
   <IsPackable>false</IsPackable>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)