【发布时间】:2017-01-01 06:16:59
【问题描述】:
我正在使用 VSTS/TFS 2015 的 .NET Client Libraries 以编程方式根据我在另一个团队项目中获取的模板创建构建定义。
我可以通过以下方式获得构建定义模板(2.0):
BuildDefinitionTemplate builddeftemplate = buildHttpClient.GetTemplateAsync(teamProject, templateId).Result;
我可以使用以下方法创建构建定义:
BuildDefinition builddef = new BuildDefinition();
builddef.Project = newTeamProject;
但似乎没有一种方法可以将模板作为构建定义的属性传递,也没有从模板创建构建定义的方法。
查看 REST API 的文档时,GET 请求实际上看起来返回了很多 JSON:
{
"id": "vsBuild",
"name": "Visual Studio",
"canDelete": false,
"category": "Build",
"iconTaskId": "71a9a2d3-a98a-4caa-96ab-affca411ecda",
"description": "Build and run tests using Visual Studio. This template requires that Visual Studio be installed on the build agent.",
"template": {
"build": [
{
"enabled": true,
"continueOnError": false,
"alwaysRun": false,
"task": {
"id": "71a9a2d3-a98a-4caa-96ab-affca411ecda",
"versionSpec": "*"
},
"inputs": {
"solution": "**\\*.sln",
"msbuildLocation": "",
"vsLocation": "",
"msbuildArgs": "",
"platform": "$(BuildPlatform)",
"configuration": "$(BuildConfiguration)",
"clean": "false"
}
},
...
所以我认为可能只将返回的模板的一部分作为 JSON 对象获取并通过构建定义的 POST 与这些部分一起传递,但似乎只能是 REST API 路由.
.NET 客户端库可以做到这一点吗?或者有没有我可能错过的更简单的方法?
【问题讨论】:
-
您要创建构建定义的构建类型是什么? vNext 还是 XAML?
-
vNext.我认为 Patrick(下)能够给出一个变通解决方案,挑战肯定是对旧团队项目的引用,这会导致创建构建定义出现问题,尽管这肯定会在未来成为 REST API 的一个惊人的补充.
标签: c# tfs azure-devops