如何通过REST API在TFS中使用指定变更集排队XAML构建?
如何通过REST API为TFS XAML构建指定变更集排队
当然可以实现!不过你踩了一个常见的坑——你用的是**VNext构建(新任务式构建)**的请求参数,而XAML构建作为旧版构建系统,参数结构完全不一样,这就是为什么指定的变更集没生效,反而用了最新的。
正确的请求方式
XAML构建的REST API需要通过parameters字段来传递源代码版本参数,而不是VNext的SourceVersion。具体来说,你需要在请求体里添加序列化后的JSON字符串,指定Build.SourceGetVersion参数为目标变更集ID。
请求示例
POST 地址:
https://{instance}/DefaultCollection/{project}/_apis/build/builds?api-version=1.0
请求体(JSON):
{ "definition": { "id": 28 }, "sourceBranch": "$/xxxx/xxxx", "parameters": "{\"Build.SourceGetVersion\":\"Cxxxx\"}" }
关键说明
- 参数格式:
parameters的值必须是JSON字符串(注意外层的引号和内部的转义),而不是直接的JSON对象,这是XAML构建API的硬性要求。 - 变更集格式:必须以
C开头加上变更集编号,比如C12345,不能只写纯数字编号。 - API版本:建议使用
api-version=1.0或2.0,更高版本的API主要针对VNext构建,对XAML的支持有限。
为什么你之前的方法没用?
你找到的解决方案是针对VNext构建的,这类构建用SourceVersion参数来指定源代码版本,但XAML构建系统完全不识别这个字段,自然会忽略它,转而使用构建定义里默认的最新变更集。
内容的提问来源于stack exchange,提问作者Tobi
相关产品推荐
相关产品推荐

