我是C#和TFS的新手,我已经设置了一个使用持续集成的基本WPF应用程序。问题是有些用户没有应该更新,我们没有版本控制可以这么说。我想要做的是在代码中有一个变量,如下所示。
public static string BuildNumber = "";
并在在线构建过程中填充它。这样我们就可以在标题栏中显示它,当他们打电话时,我们立即知道我们正在处理什么。我认为这可以在“过程变量”部分完成。但真的需要一步一步帮助。只是希望它具有与“$(date:yyyyMMdd)$(rev:.r)_ $(SourceBranchName)”的构建相同的格式 我们对此非常陌生,并且知道我们应该使用正确的构建版本,例如1.0.0.1类型的东西。但他们真的在寻找快速解决方案。因此,除非设置正确的版本控制非常简单。请不要试图引导我沿着这条路走下去,这已经在这里陡峭的学习曲线上了。
感谢。
答案 0 :(得分:1)
警告:我假设您使用的是TFS 2015或更高版本和构建vNext(即不使用Xaml构建版本)。
使用Powershell Task作为构建的第一步,可以轻松解决您的问题。此时,内置编号在${env:BUILD_BUILDNUMBER}
变量中已知且可用。
假设包含public static string BuildNumber = "";
行的文件位于源目录的根目录中,并命名为BuildNumber.cs
。
然后Powershell代码类似于以下内容:
$pathToBuildNumber = "${env:BUILD_SOURCESDIRECTORY}\BuildNumber.cs"
$source = Get-Content $pathToBuildNumber
$source -replace 'public static string BuildNumber = "(.*)";',$env:BUILD_BUILDNUMBER | Out-File $pathToBuildNumber
答案 1 :(得分:0)
根据我的理解,似乎您想用变量覆盖您的Build号,您可以使用build variables通过powershell脚本执行此操作:
1)首先像这样创建一个Powershell脚本
$FinalVersion=Some-Function-To-Calculate-Version
$BuildDefName = $Env:BUILD_DEFINITIONNAME
Write-Host "##vso[build.updatebuildnumber]$($BuildDefName)-$($FinalVersion)"

2)在你的vNext构建定义中,对于" 构建号格式 t"组 它对任何事情。它并不重要,因为Build Number会是 覆盖。
3)在相同的vNext构建定义步骤中,将第一步添加为 Powershell步骤,并将步骤1中的脚本设置为执行。您 以后可以自定义是否要传递变量 计算您的内部版本号。
4)排队你的构建并查看结果。
另请参阅此类似问题:Accessing the build revision number in Powershell script during TFS build