包版本未在 VSTS 构建和 .net 标准下更新

Package Version not updating under VSTS Build and .net standard

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

这导致软件包版本号始终为 1.0.0,我认为这意味着未设置 "PackageVersion"。 GitVersion 文档说 "the following MSBuild properties are set when UpdateVersionProperties is true" 但似乎没有相应的选项。

有人知道如何让它工作吗?

编辑

项目文件:

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

Nuspec 文件。

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

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

  • .NET Core task with command restore: 指定 .csproj 的路径。
  • .NET Core task with command build: 指定 .csproj 的路径。
  • .NET Core task with command pack: 根据需要指定 .csproj 的路径和包版本 (/p:PackageVersion)。

    要为 nuget 包使用 Gitversion 变量,您只需在 .NET Core pack 任务中添加参数 /p:PackageVersion=$(GitVersion.Major).$(GitVersion.Minor).$(GitVersion.Patch)

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