自定义TFS环境变量不读取$(日期)

时间:2018-01-04 11:18:26

标签: tfs environment-variables

我想使用这样的自定义tfs变量:

MergedVersion:$(BuildVersion.Major).$(BuildVersion.Minor).$(Date:yy)$(DayOfYear)$(Rev:.r)

我的问题是$(Date)$(Rev:r)$(DateOfYear)在BuildNumberFormat-Settings之外无效。

我的结果是:

  

无效的版本字符串:'1.0。$(日期:yy)$(DayOfYear)$(Rev:.r)'。

使用如此处所示的buildnumberformat - 正常工作:

enter image description here

结果$(Build.BuildNumber)MyBuildName_1.0.18004.15

3 个答案:

答案 0 :(得分:4)

某些令牌仅适用于Build number format部分,例如您在此处提及的$(Date)$(Rev:r)$(DateOfYear)。见this directive

要解决此问题,要使用$(Rev:r),您可以将内部版本号格式设置为$(Rev:r),然后在任务中使用$(Build.BuildNumber)变量。

要使用$(Date:yy)$(DayOfYear),您可以通过PowerShell任务设置变量,如上面提到的ChamindaC。

  1. 在构建定义中添加PowserShell任务
  2. 复制并粘贴到脚本下方并将其另存为*.ps1文件
  3. 签入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"

  4. 然后,您可以在其他构建任务中使用变量$(Date)$(DayOfYear)

    Build definition options

答案 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):

How to extract $Rev from Build.BuildNumber

在下面的MSBuild任务中,我将其称为$(Revision)。

$(Revision) available in the next task