nuget - VSO Build vNext - Nuget Package Build Step - 使用内部版本号来版本包

标签 nuget azure-devops azure-pipelines

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

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

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

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

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

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

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

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

  • "PackageName.2015.11.11.1.nupkg"
  • "PackageName.2015.11.11.2.nupkg"
  • "PackageName.2015.11.11.3.nupkg"

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

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

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

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

但看起来这些变量并没有在搜索路径中被替换,而是作为文字匹配出现。

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

最佳答案

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

如果您确实想要将内部版本号传输到 Nuget Publish,您可以在构建过程中添加一个 PowerShell 步骤以获取内部版本号。详见Source Code中构建版本相关代码。

然后在 PowerShell 脚本的末尾添加代码:

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

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

关于nuget - VSO Build vNext - Nuget Package Build Step - 使用内部版本号来版本包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33648864/

相关文章:

Azure Pipelines .net core 3.1 库以及对其他库的引用如何创建一个 nuget 包

asp.net - Nuget.Core.dll 版本号不匹配

asp.net - 包尝试添加对 GAC 中未找到的 System.Runtime 的引用

git - 在 Powershell 中执行 git 命令

azure - 集中管理的 Azure 管道

ruby-on-rails - 如何使用 Azure Pipelines 将 Ruby 部署到 Azure 应用服务?

visual-studio-2010 - PowerShell 模块,用于从 NuGet Install.ps1/Uninstall.ps1 脚本中处理 Visual Studio 对象模型

azure-devops - 如何从发布任务修改 Azure DevOps 发布定义变量?

c# - Azure 管道 : "No packages matched the search pattern."

AzureML 在管道之间传递数据而不保存数据