MSBuild 脚本中的 TFS 2013 分支名称

Posted

技术标签:

【中文标题】MSBuild 脚本中的 TFS 2013 分支名称【英文标题】:TFS 2013 Branch Name in MSBuild Script 【发布时间】:2019-12-13 09:24:50 【问题描述】:

我已经看到多次提到包含 TFS 分支名称的变量,这些变量是从构建定义的源设置路径中的最后一个目录中提取的,但我没有在 TFS 2013 中工作。是否有一个变量将在 TFS 2013 中填充到我的 MSBuild 脚本(从构建定义触发)?

这是我没有运气尝试过的,都是空白的:

<Message Text="SourceBranchName: $(SourceBranchName)" />    
<Message Text="Build.SourceBranch: %(Build.SourceBranch)" />
<Message Text="BranchName: $(BranchName)" />
<Message Text="Build.SourceBranchName: %(Build.SourceBranchName)" />
<Message Text="BUILD_SOURCEBRANCHNAME: $(BUILD_SOURCEBRANCHNAME)" />

【问题讨论】:

@PatrickLu-MSFT 还没有机会测试。谢谢。 嗨亚伦,事情进展如何?有什么要更新的吗?只需检查以查看提供的信息是否有帮助。请随时在这里分享。 【参考方案1】:

环境变量在带有 TFS2013 的 MSBuild 脚本中的数据不使用这种格式。

应该是TF_BUILD_XXX比如

TF_BUILD_BUILDDIRECTORY:构建代理工作目录。例如:C:\Build\BuildBot3\CoolApp\CIBuild。

官方教程在 TFS2013 中构建 XAML,你可以参考这个链接--Team Foundation Build environment variables。

如您所见,我们在构建中没有与分支名称相关的环境变量

对于解决方法,您可以使用客户端 API 来获取类似信息。

IBuildDetail 对象中有一个名为 SourceGetVersion 的属性。当使用构建定义中定义的默认分支手动执行或触发构建定义时,此属性仅返回“T”,但如果构建定义是由提交到受监控的分支触发的,然后将此属性设置为分支名称。

只需解析该属性的值,您就应该能够准确地确定是哪个分支触发了构建定义。或者你也可以使用

TF_BUILD_SOURCEGETVERSION:正在构建的版本(TFVC 变更集或 Git 提交)。

【讨论】:

【参考方案2】:

您正在查看 TFS 2015 中引入的构建系统的文档。TFS 2013 仅支持 XAML 构建,它已被弃用,因此越来越难以找到有关文档。

不过,有documentation 可用。

这里的问题是您正在寻找 TFS 2013 中不存在的变量。您可以做的最好的事情是 TF_BUILD_SOURCEGETVERSION,它将是 TFVC 变更集或正在构建的 Git 提交哈希。

【讨论】:

以上是关于MSBuild 脚本中的 TFS 2013 分支名称的主要内容,如果未能解决你的问题,请参考以下文章

预构建脚本路径和预构建脚本参数

TFS MSBuild 不为解决方案中的网站恢复 nugets

TFS 2013 使用动态解决方案计数构建定义

Git删除TFS git存储库中的远程分支

2017年TFS - VS 2017 15.5更新后默认为MSBuild 14。需要MSBuild 15回来

通过 tfs buildagent 启动时,bitsadmin 无法正常工作