构建定义为空

BuildDefinition null

我正在使用这段代码来确定特定构建的构建定义详细信息:

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 服务器 + 构建(vNext 构建),则 bd.BuildDefinition 对象变为空。

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

我猜你使用的 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 文档中找到的内容。

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

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