Получение информации BuildAgent из сборки

У меня есть переменная IBuildDetail с необходимой мне информацией о сборке.

Хорошо, но когда я проверяю свойство BuildAgent, оно показывает следующее: build.BuildAgent выдал исключение типа System.NotImplementedException

Затем я попытался проверить build.BuildController.Agents, хорошо, что я нашел BuildAgent, но в этой коллекции 7 агентов сборки. Мне нужен только агент сборки, связанный с моей сборкой, а не все агенты сборки из этого контроллера.

Кто-нибудь знает, как получить эту информацию? (Выберите имя агента сборки или имя компьютера, используя переменную IBuildDetail)

-> Я использую API TFS2010, и мне нужно указать агент для каждой сборки


person Fabito    schedule 08.04.2011    source источник


Ответы (3)


Как говорит Дуат.
Чтобы ответить на этот вопрос, я имел возможность изучить это.
Следующее работало для данного IBuildDetail buildDetail и доступа к IBuildServer buildService:

IBuildInformation buildInformation = buildDetail.Information;
IBuildInformationNode[] buildInformationNodes = buildInformation.Nodes;
string agentUri = buildInformationNodes[0].Children.Nodes[3].Fields["ReservedAgentUri"];
IBuildAgent buildAgent = buildService.GetBuildAgent(new Uri(agentUri));
person pantelif    schedule 29.02.2012
comment
Магическое число (0, 3) — нет-нет! Решение по предоставленной вами ссылке намного лучше - например, функция GetBuildAgentName от Хамида Шахида. - person Andrzej Martyna; 18.03.2014

Когда сборка завершится, вы сможете получить информацию об агенте из свойства Information (IBuildInformation) IBuildDetail. Вы можете попробовать получить узел следующего типа:

http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.common.informationtypes.agentscopeactivitytracking.aspx

и поля:

http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.common.informationfields.reservedagentname.aspx

or

http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.common.informationfields.reservedagenturi.aspx

person Duat Le    schedule 28.04.2011

Внутри области запуска на агенте вам необходимо иметь действие GetBuildAgent, которое присваивает сведения о BuildAgent переменной типа IBuildAgent.

Затем вы можете получить доступ к свойствам этой переменной, чтобы получить доступ к данным об агенте сборки: http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.client.ibuildagent.aspx

Примечание. Рабочий процесс сборки по умолчанию уже делает это.

person Dylan Smith    schedule 11.04.2011
comment
Я использую API TFS2010 для доступа к информации BuildAgent. Я не работаю с wwf. Это мой код: IBuildDetail build = ..... ; build.BuildAgent ... -> Выдает исключение... - person Fabito; 13.04.2011