鉴于以下yml代码段,此脚本中使用的Azure DevOps管道predefined variables不会被“挑选”。
pool:
vmImage: 'Ubuntu 16.04'
variables:
buildConfiguration: 'Release'
trigger:
branches:
include:
- master
paths:
include:
<snipped>
pr:
autoCancel: false
paths:
include:
<snipped>
steps:
# Remove this task once .NET Core 2.2 is added to hosted agent.
- task: DotNetCoreInstaller@0
inputs:
packageType: 'sdk'
version: '2.2.100'
- script: dotnet build --configuration $(buildConfiguration) -p:Version=$(Year:yyyy).$(Month).$(DayOfMonth).$(Rev:r)
displayName: 'dotnet build'
workingDirectory: 'src/<snipped>'
注意我如何尝试设置dotnet build
的version属性:
dotnet build --configuration $(buildConfiguration) -p:Version=$(Year:yyyy).$(Month).$(DayOfMonth).$(Rev:r)
但是!当我手动定义构建名称..然后引用该变量..时,它起作用了!
name: $(Year:yyyy).$(Month).$(DayOfMonth).$(Rev:r)
<snipped>
- script: dotnet build --configuration $(buildConfiguration) -p:Version=$(Build.BuildNumber)
displayName: 'dotnet build'
workingDirectory: 'src/<snipped>'
这是Azure DevOps的错误吗?
答案 0 :(得分:4)
变量$(Year:yyyy)
$(Month)
$(DayOfMonth)
$(Rev:r)
不是常规预定义构建变量的一部分,如您所见,它们不存在于列表{ {3}}。
您只能以内部版本号格式(YAML中的name
)使用这些变量仅。
因此,您就可以在其中使用它们,并且在构建过程中使用变量Build.BuildNumber
来获取值。