【问题标题】:Disable NuGet BuildPackage for a single project in solution为解决方案中的单个项目禁用 NuGet BuildPackage
【发布时间】:2014-09-26 14:16:29
【问题描述】:

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

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

msbuild MySolution.sln /P:Configuration=Release;BuildPackage=true;PackageOutputDir="..\CreatedPackages"

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

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

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

【问题讨论】:

    标签: msbuild nuget


    【解决方案1】:

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

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

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

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

    <PropertyGroup>
       <OutputType>Exe</OutputType>
       <TargetFramework>netcoreapp3.1</TargetFramework>
       <PublishRepositoryUrl>false</PublishRepositoryUrl>
       <IsPackable>false</IsPackable>
    </PropertyGroup>
    

    【讨论】:

      【解决方案2】:

      如果不修改Nuget.targets 文件,似乎无法解决此问题。

      我们所做的是引入一个新属性“SkipBuildPackage”,默认情况下(有条件,如果尚未设置为另一个值)在nuget.targets 文件中设置为false

      然后,BuildPackage 目标会获得一个附加条件,该条件会评估此属性并且在 SkipBuildPackage 设置为 true 时不执行目标。

      我们在默认不想构建包的项目的项目文件中将此属性设置为true

      但是,仍然可以通过在命令行中指定 /P:SkipBuildPackage=false 来为这些项目构建包。这将覆盖项目文件中的属性和nuget.targets 文件中的默认值,并防止跳过所有包。

      【讨论】:

        【解决方案3】:

        问题是 nuget.targets 文件连接到解决方案中的所有项目配置文件(.csproj),并且 BuildPackage 目标也在 nuget.targets 文件中。 解决它的两个想法:

        • 对于不需要 nuget.targets 的项目,这意味着他们不需要在构建过程中恢复包,您可以从他们的 .csproj 配置文件中删除对 nuget.target 文件的导入。

        • 将 BuildPackage 目标复制到项目配置文件 (.csproj),仅复制到您要打包的项目,然后将其从 nuget.targets 中删除。这会将 BuilPackage 目标隔离到相关项目。

        【讨论】:

        • 删除 nuget 目标文件确实不是一种选择,因为我们(仍然)依赖于旧的包恢复功能。编辑 nuget.targets 文件是我们不喜欢的,但它似乎是目前唯一的选择。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-07
        • 2016-10-13
        • 2011-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多