在 VSTS 上为预发布配置 Nuget 包

Configuring Nuget pack for prerelease on VSTS

备注 如果有更简单的方法来创建预发布包,请告诉我!

我正在使用 Visual Studio Team Services 并设置了 nuget 包和发布步骤。

我有一个名为 $(BuildSuffix) 的构建变量,它允许我将特定于构建的变量标记到构建编号格式的末尾,就像这样

$(Build.DefinitionName)_1.0.$(date:yyyy)$(date:MM)$(date:dd)$(rev:.r)$(BuildSuffix)

然后我的想法是我可以将 $(BuildSuffix) 设置为 -beta 这样我的最终构建版本可能是 Build_1.0.20170119.2-beta.

根据 nuget documentation here,将 -beta 附加到内部版本号将创建一个预发布包。 VSTS 中的构建附加了 -beta,但 nuget pack 阶段似乎从未包含它。它总是以确切的版本号出现,但没有 -beta 标记。

我的 nuspec 文件如下所示:

<package >
  <metadata>
    <id>MyCompany.Data</id>
    <version>$version$</version>

我的 NuGet 打包步骤如下所示:

经过一番研究,我把头撞在砖墙上,我想出了办法。你必须:

  • 配置本地构建代理
  • 安装 Nuget CLI
  • 在 NuGet Packager Task 上将 Path To NuGet.exe 设置为 NuGet CLI
  • 同屏设置NuGet Arguments-suffix beta

使用新的 NuGet 任务(版本 2),您可以指定其他构建属性,您可以在其中直接传递自定义构建号,而不是使用 -suffix NuGet 参数。其他构建属性正在用 nuspec 中提供的值替换 $token$,您可以随意更改其中的任何内容。

我也在你的屏幕截图上看到了它,但我从未尝试过将它用于较旧的 NuGet 任务,因为它们现在已被弃用。

尝试导入我在私人项目中使用的 NuGet 打包任务组定义可能会有所帮助。看看 Here.