3

我将内部版本号格式指定为:

$(BuildDefinitionName)_$(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r)

这将创建格式为“BuildDefinitionName_2015.11.11.1”的内部版本号

修订似乎是当天构建运行的次数。

我希望能够在进一步的构建步骤中使用这个值。

例如,我正在使用 nuget packager 步骤创建一个 nuget 包,并使用“使用内部版本号对包进行版本控制”选项

这会创建类似于“PackageName.2015.11.11.1.nupkg”的包

然后我想使用 nuget 发布者构建步骤来发布它,但问题是随着时间的推移,您会在包文件夹中获得多个包,并且 nuget 发布者步骤使用一种模式来匹配要发布的包。

IE

  • “包名.2015.11.11.1.nupkg”
  • “包名.2015.11.11.2.nupkg”
  • “包名.2015.11.11.3.nupkg”

在没有明确说明要发布的文件的情况下,发布者步骤将发布所有这些文件。

我不想要这个,我只想让它发布与当前内部版本号匹配的文件。

所以我希望能够在模式中设置内部版本号部分。

IEPackageName.$(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r).nupkg

但似乎这些变量不会在搜索路径中被替换,而是作为文字匹配出现。

奇怪的是,在 nuget 包步骤中,它为您提供了按内部版本号创建包的选项,但随后不允许您在 nuget 发布构建步骤中匹配它。

4

2 回答 2

3

Nuget Packager 步骤使用 PowerShell 脚本获取内部版本号。源代码在这里:https ://github.com/Microsoft/vso-agent-tasks/blob/84746169f19b7c3e3f67c0efa1a546c4107055fa/Tasks/NugetPackager/NuGetPackager.ps1

如果确实要将内部版本号传输到 Nuget Publish,可以在生成过程中添加 PowerShell 步骤以获取内部版本号。详情请参考源代码中的构建版本相关代码。

在 PowerShell 脚本的最后,添加代码:

Write-Host "##vso[task.setvariable variable=bversion;]$NewVersion"

此代码创建一个变量“bversion”,其中填充了构建版本号。然后,您可以在 Nuget 发布步骤中使用变量 $(bversion)。

于 2015-11-12T08:48:46.027 回答
0

我建议在每个构建中对源代码进行干净的检查,这将解决在后续构建中存在旧包文件的问题。

否则会有 $(build.buildnumber) 变量包含内部版本号的扩展值,但只要您在内部版本号中另外有 $(BuildDefinitionName) ,您将无法将其用作文件名。有关可用预定义变量的列表,请参见此处

于 2015-11-11T11:59:19.813 回答