2

我正在使用 VSTS-Build 和 GitVersion 构建一个 .net 标准组件。而且因为它的 .net 标准,我不得不使用“msbuild /t:pack”而不是 nuget pack 步骤。

这导致包版本号始终为 1.0.0,我认为这意味着未设置“PackageVersion”。GitVersion 文档说“当 UpdateVersionProperties 为真时设置了以下 MSBuild 属性”,但似乎没有这样的选项。

有谁知道如何让它工作?

编辑

项目文件:

在此处输入图像描述

我从工作构建定义中更改了两件事,禁用了 Nuget Pack 步骤,并在 Visual Studio 构建步骤中添加了“/t:pack”作为 msbuild 参数。

Nuspec 文件。

在此处输入图像描述

4

1 回答 1

3

您应该让GitVersion任务先于 MSBuild 任务。它将生成 1.1.0 的 nuget 包版本。但它不会在你的源代码中更新新版本(1.1.0),所以当你再次构建时,你总是会得到 nuget 包版本 1.1.0。

还有另一种方法可以生成 nuget 包并根据需要指定包版本。详细构建定义如下:

  • 使用命令的 .NET Core 任务restore:指定 .csproj 的路径。
  • 使用命令的 .NET Core 任务build:指定 .csproj 的路径。
  • 使用命令的 .NET Core 任务pack:根据需要指定 .csproj 的路径和包版本 ( /p:PackageVersion)。

    在此处输入图像描述

    要将 Gitversion 变量用于 nuget package,您只需/p:PackageVersion=$(GitVersion.Major).$(GitVersion.Minor).$(GitVersion.Patch)在 .NET Core pack 任务中添加参数即可。

    在此处输入图像描述

    变量$(GitVersion.Major),$(GitVersion.Minor)$(GitVersion.Patch)是在执行 GitVersion 任务后自动生成的。

于 2017-09-08T03:12:15.503 回答