【问题标题】:Custom TFS Enviroment Variable doesn't read $(Date)自定义 TFS 环境变量不读取 $(Date)
【发布时间】:2018-01-04 11:18:25
【问题描述】:

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

合并版本:$(BuildVersion.Major).$(BuildVersion.Minor).$(Date:yy)$(DayOfYear)$(Rev:.r)

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

我的结果是:

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

虽然使用此处所示的 buildnumberformat - 可以正常工作:

结果$(Build.BuildNumber)MyBuildName_1.0.18004.15

【问题讨论】:

    标签: tfs environment-variables


    【解决方案1】:

    某些令牌仅在Build number format 部分可用,例如您在此处提到的$(Date)$(Rev:r)$(DateOfYear)。见Build definition options

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

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

    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"

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

    【讨论】:

      【解决方案2】:

      在构建定义的 PowerShell 任务中使用以下脚本

      $date=$(Get-Date -Format 'yy');
      Write-Host "##vso[task.setvariable variable=Today]$date"
      

      然后您可以在后续构建任务中使用 $(Today)。然而,像 $(Today:yy) 这样的格式是不可能的,因为它只支持内部版本号格式。

      【讨论】:

        【解决方案3】:

        基于@ChamindaC 和@Andy Li-MSFT 的回答,并使用Peter Groenewegen 的Xpirit Run Inline Powershell and Azure Powershell 构建扩展,我能够从内部版本号中检索$(rev:r):

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-08-13
          • 2019-02-25
          • 2021-08-01
          • 1970-01-01
          相关资源
          最近更新 更多