BuildDefinition为null

时间:2015-09-02 12:21:05

标签: tfsbuild tfs2015

我使用这段代码来确定特定构建的构建定义细节:

TfsTeamProjectCollection tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(tfsUri);
IBuildServer buildServer = (IBuildServer)tpc.GetService(typeof(IBuildServer));
IBuildDetail bd = buildServer.GetBuild(buildUri);
string a = bd.BuildDefinition.Name;

如果tfsUri和buildUri指向TFS2013服务器和TFS2013构建,那么代码就可以了,但是如果我改为TFS2015 server + build(vNext build),那么bd.BuildDefinition对象将变为null。

如何使用C#TFS API获取vNext构建的构建详细信息(构建定义)?

2 个答案:

答案 0 :(得分:3)

我猜你正在使用的TFS API不支持Build vNext,你可能不得不尝试使用REST API。

您可以使用它来获取构建定义:

https://{your-project}.visualstudio.com/defaultcollection/taeguk/_apis/build/definitions?api-version=2.0

一旦你拥有" ID"你可以使用这个电话:

https://{your-project}.visualstudio.com/defaultcollection/taeguk/_apis/build/builds?api-version=2.0&definitions={id}

我的基础是我在Visual Studio Team Services REST API文档中找到的内容。

答案 1 :(得分:0)

您的问题与我已回答的这篇文章here非常相似。但是,由于您感兴趣的是构建定义而不是单个构建,因此代码需要进行更改:

var definitions = buildClient.GetDefinitionsAsync(project: "<projectname>");
foreach (var definition in definitions.Result)
    {
        Console.WriteLine(definition.Name);
    }