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

自定义TFS环境变量不';t读取$(日期),tfs,environment-variables,Tfs,Environment Variables,我想使用如下自定义tfs变量: 合并版本:$(BuildVersion.Major)。$(BuildVersion.Minor)。$(日期:yy)$(DayOfYear)$(版本:r) 我的问题是$(日期),$(修订版:r)和$(DateOfYear)在BuildNumberFormat设置之外不起作用 我的结果是: 无效的版本字符串:“1.0.$(日期:yy)$(DayOfYear)$(版本:.r)” 使用buildnumberformat(如图所示)时,可以正确工作: 结果$(Build.

我想使用如下自定义tfs变量:

合并版本:
$(BuildVersion.Major)。$(BuildVersion.Minor)。$(日期:yy)$(DayOfYear)$(版本:r)

我的问题是
$(日期)
$(修订版:r)
$(DateOfYear)
在BuildNumberFormat设置之外不起作用

我的结果是:

无效的版本字符串:“1.0.$(日期:yy)$(DayOfYear)$(版本:.r)”

使用buildnumberformat(如图所示)时,可以正确工作:


结果
$(Build.BuildNumber)
MyBuildName_1.0.18004.15

在生成定义中的PowerShell任务中使用以下脚本

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

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

一些令牌仅在
内部版本号格式
部分可用,例如
$(日期)
$(Rev:r)
$(DateOfYear)
。看

作为一种解决方法,要使用
$(Rev:r)
可以将生成编号格式设置为
$(Rev:r)
,然后在任务中使用
$(build.BuildNumber)
变量

要使用
$(日期:yy)$(DayOfYear)
,您可以通过PowerShell任务将变量设置为上述ChamindaC

  • 在生成定义中添加PowserShell任务
  • 复制并粘贴下面的脚本,并将其另存为
    *.ps1
    文件
  • 签入PS文件,然后在PowerShell任务中运行PS文件

    $time=$(获取日期-格式“yy”)#您可以根据需要设置日期格式
    $doy=(获取日期)。DayofYear
    写入主机“##vso[task.setvariable=Date]$time”
    写入主机“##vso[task.setvariable=DayOfYear]$doy”

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


    在@ChamindaC和@Andy Li MSFT的答案之上构建,并使用Peter Groenewegen的Xpirit构建扩展,我能够从构建编号中检索$(rev:r):

    在以下MSBuild任务中,我将其引用为$(修订版)