如何在TFS 2017构建定义中查看上次成功构建后新增变更集
在TFS 2017构建中查看自上次成功构建以来的变更集
我来帮你搞定这个需求——在TFS 2017里完全可以实现类似TeamCity那样查看变更集的功能,根据不同场景有几种实用方式:
方式一:直接在构建摘要页面查看(最省心)
只要你的构建定义关联了TFVC仓库,TFS 2017默认就会在构建完成后的摘要页展示变更集信息:
- 打开对应的构建记录,切换到「摘要」标签页
- 找到
Source Control Changes(或Changesets)板块,里面会列出所有自上次成功构建以来,被纳入本次构建的变更集 - 点击任意变更集编号,就能直接跳转到TFVC仓库查看该变更集的详细内容
方式二:在构建过程中通过脚本输出到日志
如果需要在构建运行时就获取并展示这些变更集(比如输出到日志供后续步骤使用),可以用PowerShell脚本结合TFS命令行工具tf.exe实现:
- 在你的构建定义里添加一个PowerShell任务
- 将以下脚本粘贴到任务的「脚本」区域:
# 获取当前构建的基础信息 $collectionUri = "$(System.TeamFoundationCollectionUri)" $teamProject = "$(System.TeamProject)" $definitionId = "$(System.DefinitionId)" $currentSourceVersion = "$(Build.SourceVersion)" # 调用TFS REST API获取最近一次成功构建的源代码版本 $apiUrl = "$collectionUri$teamProject/_apis/build/builds?definitions=$definitionId&statusFilter=succeeded&top=1&api-version=2.0" $lastSuccessBuild = (Invoke-RestMethod -Uri $apiUrl -UseDefaultCredentials).value[0] $lastSourceVersion = $lastSuccessBuild.sourceVersion # 输出两次版本之间的变更集详情 Write-Host "=== 自上次成功构建以来的变更集 ===" tf history "$(Build.SourcesDirectory)" ` /version:$lastSourceVersion~$currentSourceVersion ` /recursive ` /noprompt ` /format:detailed
- 确保构建代理上已安装TFS命令行工具(
tf.exe一般在Visual Studio安装目录下,比如C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer)
方式三:自定义构建通知包含变更集
如果想在构建完成后通过邮件接收变更集信息,可以自定义TFS的通知模板:
- 进入TFS的「设置」→「通知」
- 找到或创建一个针对「构建完成」的通知模板
- 在模板内容中添加变更集占位符(比如
@build.changesets),这样通知里就会自动包含本次构建的变更集列表
内容的提问来源于stack exchange,提问作者horato
相关产品推荐
相关产品推荐

