I want to use a custom tfs variable like this:
MergedVersion: $(BuildVersion.Major).$(BuildVersion.Minor).$(Date:yy)$(DayOfYear)$(Rev:.r)
My problem is that $(Date)
, $(Rev:r)
and $(DateOfYear)
don't work outside the BuildNumberFormat-Settings.
My result is:
invalid version string: '1.0.$(Date:yy)$(DayOfYear)$(Rev:.r)'.
While with the buildnumberformat like shown here - works correctly:
Result $(Build.BuildNumber)
is MyBuildName_1.0.18004.15
Some tokens are only available in the
Build number format
section, such as$(Date)
,$(Rev:r)
and$(DateOfYear)
you mentioned here. See Build definition optionsAs a workaround, to use
$(Rev:r)
you can set the build number format as$(Rev:r)
, then use the$(Build.BuildNumber)
variable in your tasks.To use
$(Date:yy)$(DayOfYear)
, you can set the variables via PowerShell task as ChamindaC mentioned above.*.ps1
fileCheck in the PS file, then run the PS file in PowerShell task
$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"
Then you can use the variables
$(Date)
and$(DayOfYear)
in other build tasks.Use following script in a PowerShell Task in your build definition
Then you can use $(Today) in your subsequent build tasks. However, usage like $(Today:yy) with format is not possible as it is supported only in build number format.
Building on top of @ChamindaC and @Andy Li-MSFT's answers, and using Peter Groenewegen's Xpirit Run Inline Powershell and Azure Powershell build extension, I was able to retrieve the $(rev:r) from the build number:
In the following MSBuild task I reference that as $(Revision).