构建定义为空
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);
}
我正在使用这段代码来确定特定构建的构建定义详细信息:
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);
}