Azure devops 发布预发布nuget包的条件buildnumber?

Azure devops 发布预发布nuget包的条件buildnumber?,azure-devops,azure-pipelines,Azure Devops,Azure Pipelines,我正在自动部署nuget包。 它工作正常,只是我无法按我想要的方式设置PreRelease软件包 有两个分支触发生成。 当主分支触发生成时,我想发布一个常规的nuget包。 当测试分支触发生成时,我想发布一个预释放包。 为此,我需要将-beta添加到nuget软件包版本号中。 因此,我将自动包版本控制从使用内部版本号更改为使用环境变量 见以下img: 起初,它抱怨变量说,没有为提供的环境变量找到任何值,但我通过删除$()解决了这个问题。但是现在我仍然被卡住了,因为我找不到方法用Build.Bu

我正在自动部署nuget包。
它工作正常,只是我无法按我想要的方式设置PreRelease软件包

有两个分支触发生成。
当主分支触发生成时,我想发布一个常规的nuget包。
当测试分支触发生成时,我想发布一个预释放包。

为此,我需要将
-beta
添加到nuget软件包版本号中。 因此,我将
自动包版本控制
使用内部版本号
更改为
使用环境变量

见以下img:

起初,它抱怨变量说,
没有为提供的环境变量找到任何值,但我通过删除
$()
解决了这个问题。但是现在我仍然被卡住了,因为我找不到方法用
Build.BuilderNumber
-beta
设置变量。我可以复制构建并为自己的分支使用每个构建触发器,但是我宁愿只有一个构建可以处理来自两个分支的构建

因此,现在我考虑将设置改回
use build number
,并更改在构建的选项卡
options
中设置构建编号的表达式但是,即使在那里,我也无法在
Build.SourceBranch
上使用条件表达式来添加或不添加
-beta

克里斯·麦肯齐(Chris McKenzie)似乎也遇到了类似的问题,并通过powershell解决了这个问题。不幸的是,我不知道powershell,也无法理解,因为脚本似乎太大,无法满足我的需要。我仍然相信他们对我的希望。所以我将朝这个方向去实现我的条件构建编号

这个问题越来越长了,所以我用粗体标出了它的关键元素。

我在何处以及如何在源分支上设置一个条件,将
-beta
附加到BuildNumber并用作nuget软件包版本?

您可以通过添加一个PowerShell任务来实现,根据不同的分支更改变量
$(PackageVersion)
条件

在NuGet pack任务之前,使用以下脚本添加一个PowerShell任务

$branch1="test"
$branch2="master"
if ("$(Build.SourceBranchName)" -eq $branch1)
{
  echo "the build is on $branch1"
  Write-Host "##vso[task.setvariable variable=PackageVersion]$(Build.BuildNumber)-beta"
}
elseif ("$(Build.SourceBranchName)" -eq $branch2)
{
  echo "the build is on $branch2"
  Write-Host "##vso[task.setvariable variable=PackageVersion]$(Build.BuildNumber)"
}
else
{
  echo "it's either on $branch1 branch nor $branch2 branch"
}
现在在NuGet pack setp中,如果分支是
master
,则包版本将是
$(Build.BuildNumber)
;如果分支是
test
,则包版本将是
$(Build.BuildNumber)-beta