2015-09-02 3 views
3

Я использую этот кусок кода для определения деталей определения сборки конкретного сборки:BuildDefinition нуль

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.

Как я могу получить детали сборки (построить определение) сборки vNext с использованием API C# TFS?

ответ

3

Я предполагаю, что API TFS, который вы используете, не поддерживает сборку 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.

+0

Я надеялся, что я могу избежать такого рода спагетти API, как я пытаюсь перенести пользовательские операции сборки в систему сборки vNext. – ds19

+0

Я еще не там, но было приятно узнать, что я не могу использовать старый API, к которому я так привык ... не знаю, что я буду делать, когда придет время :) – DaveShaw

0

Ваш вопрос очень похож на этот пост here, на который я ответил. Однако, так как вы заинтересованы в определении сборки, а не индивидуальной сборки, код понадобился бы изменения как таковой:

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