包版本未在 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任务后自动生成的。
我正在使用 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任务后自动生成的。