我想使用这样的自定义tfs变量:
MergedVersion:$(BuildVersion.Major).$(BuildVersion.Minor).$(Date:yy)$(DayOfYear)$(Rev:.r)
我的问题是$(Date)
,$(Rev:r)
和$(DateOfYear)
在BuildNumberFormat-Settings之外无效。
我的结果是:
无效的版本字符串:'1.0。$(日期:yy)$(DayOfYear)$(Rev:.r)'。
使用如此处所示的buildnumberformat - 正常工作:
结果$(Build.BuildNumber)
为MyBuildName_1.0.18004.15
答案 0 :(得分:4)
某些令牌仅适用于Build number format
部分,例如您在此处提及的$(Date)
,$(Rev:r)
和$(DateOfYear)
。见this directive
要解决此问题,要使用$(Rev:r)
,您可以将内部版本号格式设置为$(Rev:r)
,然后在任务中使用$(Build.BuildNumber)
变量。
要使用$(Date:yy)$(DayOfYear)
,您可以通过PowerShell任务设置变量,如上面提到的ChamindaC。
*.ps1
文件签入PS文件,然后在PowerShell任务中运行PS文件
$time=$(Get-Date -Format 'yy') # you can set the date format based on your requirement
$doy = (Get-Date).DayofYear
Write-Host "##vso[task.setvariable variable=Date]$time"
Write-Host "##vso[task.setvariable variable=DayOfYear]$doy"
然后,您可以在其他构建任务中使用变量$(Date)
和$(DayOfYear)
。
答案 1 :(得分:2)
在构建定义中的PowerShell任务中使用以下脚本
$date=$(Get-Date -Format 'yy');
Write-Host "##vso[task.setvariable variable=Today]$date"
然后,您可以在后续构建任务中使用$(Today)。但是,使用带格式的$(Today:yy)是不可能的,因为它仅在内部版本号格式中受支持。
答案 2 :(得分:1)
基于@ChamindaC和@Andy Li-MSFT的答案,并使用Peter Groenewegen的Xpirit Run Inline Powershell and Azure Powershell构建扩展名,我能够从内部版本号中检索$(rev:r):
在下面的MSBuild任务中,我将其称为$(Revision)。