【问题标题】:Package Version not updating under VSTS Build and .net standard包版本未在 VSTS 构建和 .net 标准下更新
【发布时间】:2017-09-07 09:45:52
【问题描述】:

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

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

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

编辑

项目文件:

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

Nuspec 文件。

【问题讨论】:

  • PackageVersion 默认为 Version,这是 GitVersion 设置的。请分享您的设置的更多详细信息(csproj 文件)

标签: msbuild azure-pipelines .net-standard gitversion


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 我假设我会用 GitVersion 创建的环境变量替换版本号?
  • 环境变量可以在/p:PackageVersion中使用,但是你应该注意格式应该是major.minor.patch
  • 那么您能否在您的示例中阐明我如何使用 GitVersion 生成包版本?谢谢
  • 是的,我在回答的最后添加了使用GitVersion进行打包的设置,你可以试一试。
  • 您可以尝试使用 NuGet push 任务。
猜你喜欢
  • 1970-01-01
  • 2018-01-22
  • 1970-01-01
  • 2023-04-04
  • 2017-08-26
  • 2015-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多