在TFS构建阶段设置C#变量

时间:2018-05-01 02:32:15

标签: c# visual-studio tfs

我是C#和TFS的新手,我已经设置了一个使用持续集成的基本WPF应用程序。问题是有些用户没有应该更新,我们没有版本控制可以这么说。我想要做的是在代码中有一个变量,如下所示。

public static string BuildNumber = "";

并在在线构建过程中填充它。这样我们就可以在标题栏中显示它,当他们打电话时,我们立即知道我们正在处理什么。我认为这可以在“过程变量”部分完成。但真的需要一步一步帮助。只是希望它具有与“$(date:yyyyMMdd)$(rev:.r)_ $(SourceBranchName)”的构建相同的格式 我们对此非常陌生,并且知道我们应该使用正确的构建版本,例如1.0.0.1类型的东西。但他们真的在寻找快速解决方案。因此,除非设置正确的版本控制非常简单。请不要试图引导我沿着这条路走下去,这已经在这里陡峭的学习曲线上了。

感谢。

2 个答案:

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