我们有一个TFS 2012实例和一个带VS 2017的构建代理。我正在尝试修改XAML构建模板,以从给定项目创建nuget包。我必须将变更集编号放在软件包的说明中,但我无法获得正确的值。
我的模板的AgentScope中有一个InvokeProcess活动,该活动运行PowerShell脚本来打包程序包。我尝试获取TF_BUILD_ *环境变量,但似乎没有一个被填充。我也尝试过BUILD_SOURCEVERSION,但没有运气。目前,我传递的是BuildDetail.SourceGetVersion值,但这将返回整个团队项目的当前变更集,而不是我正在构建的特定项目。
我在做什么错?这些变量是否仅在TFS服务器上而不在代理(构建服务器)上?
答案 0 :(得分:1)
PowerShell脚本中的TFS 2012构建变更集版本
根据文章Build Script Hooks for TFS 2012 Builds:
当我为2013年的版本创建脚本以对程序集进行版本控制时,我 依赖于以下事实,即2013年版本会设置一些环境变量 您可以在脚本中使用的代码。您可以看到我正在 $ env:TF_BUILD_BUILDNUMBER。好,在2012年工作流程中,这些变量 尚未设置,因此您必须添加一项活动。
您尝试获取TF_BUILD_ *环境变量但没有一个被填充的原因。
因此,要解决此问题,您只需按照“挑战2”中的步骤进行设置即可。
或者,您可以使用TFS API在TFS版本控件中获取最新的变更集编号:
请参阅此线程以获取详细信息:
Programmatically retrieve the latest changeset number available in a workspace
然后,您可以编写另一个小程序来修改.cs
文件中的description字段,作为您在上面获得的变更集编号。
希望这会有所帮助。