2015-12-31 5 views
0

У меня есть процесс сборки TFS, где я вызываю команду Powershell, которая возвращает набор изменений обратно в процесс сборки. Я хотел бы связать этот набор изменений с самой сборкой, чтобы она появилась в отчете по сборке.Преобразование целого в Microsoft.TeamFoundation.VersionControl.Client.Changeset

Проблема в том, что значение, возвращаемое из Powershell представляет собой целое число и переменная, используемая для представления в ревизии TFS является типа: «Microsoft.TeamFoundation.VersionControl.Client.Changeset»

Есть в процессе сборки TFS для преобразования целого в этот тип?

Если я пытаюсь сделать прямое преобразование, я получаю следующее сообщение об ошибке:

Value of type 'Integer' cannot be converted to 'Microsoft.TeamFoundation.VersionControl.Client.Changeset'.

Также обратите внимание: я уже возился с Community TFS сборки расширений и я не смог найти деятельность Мне было нужно.

+0

Какая версия TFS вы используете? Получаете ли вы ID набора изменений из сценария Powershell? –

+0

К сожалению, я должен был упомянуть, что значение, которое я получаю из сценария Powershell, - это идентификатор набора изменений. – bsumner

ответ

1

Это должно быть действие «Получить», а не действие «Преобразовать». Вам нужно получить набор изменений с помощью возвращаемого целочисленного идентификатора набора изменений, а затем связать набор изменений для сборки.

$tfsUrl = “xxxxxxxxxxxxxxxx” 
$chId = “xxxxxx” 
$tfs = New-Object Microsoft.TeamFoundation.Client.TfsTeamProjectCollection $tfsUrl 
$vcs = $tfs.GetService([Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer]) 
$changeset = $vcs.GetChangeset($chId) 
+0

Это помогает немного больше, мне придется перевести это с Powershell на слабые сценарии VB.NET, которые использует TFS. Если бы у меня был выбор, я бы использовал Powershell для получения набора изменений, но вы не можете вернуть объект из Powershell в TFS Build. – bsumner

1

Microsoft.TeamFoundation.VersionControl.Client.Changeset - Changeset Class, который представляет собой набор изменений, внесенных в репозиторий. Кажется, вы получаете идентификатор набора изменений из сценария Powershell, поскольку вы упомянули, что это целое число. Чтобы получить идентификатор набора изменений, вам необходимо использовать Changeset.ChangesetId Property класса изменений.

+0

Будет ли это выглядеть? В настоящее время у меня есть: 'Microsoft.TeamFoundation.VersionControl.Client.Changeset.ChangesetId = MyBuildID' Но это бросание ссылки на не общего пользователя требует ссылки на объект." ошибка – bsumner

+0

Частично разобрался, это был неправильный класс: 'Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer.GetChangeset (MyBuildID)' Теперь просто исправить ошибку, которая приходит с ней: «Ссылка, необходимая для сборки» Microsoft .TeamFoundation.Client, Version = 12.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a ', содержащий реализованный интерфейс «Microsoft.TeamFoundation.Client.ITfsTeamProjectCollectionObject». Добавьте его в свой проект ». – bsumner

Смежные вопросы