2016-01-14 3 views
1

Я пытаюсь программно повторить ранее выполненную сборку TFS. (Как вы можете сделать из VS с помощью «Действия, Retry Build».)Повторная попытка создания ранее созданной сборки TFS из powershell

Мой пример кода PS ниже подключается к TSF, захватывает очередь сборки предыдущей сборки по ее идентификатору и пытается установить ее статус повтора и сохранить , Сохранение не выполняется, говоря, что статус сборки должен быть «Завершен». При запросе статуса отображается «Завершено».

. ".\loadTfsAssemlies.ps1" 

$tfsURL = "http://myServer:8080/tfs/myCollection" 
$tpc = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($tfsURL) 
$bs = $tpc.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer]) 
$qb = $bs.getqueuedbuild(258498,"All") 

$qb.retry() 
$qb.save() 

Exception calling "Save" with "0" argument(s): "Queued build 258498 on build controller blah blah can only be retried if the status is Completed. The status was Completed." 
At line:1 char:1 
+ $qb.save() 
+ ~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : QueuedBuildUpdateException 

$qb.status 
Completed 

Любые идеи, что я делаю неправильно здесь? Или, может быть, знаете лучший способ повторить предыдущую сборку?

+0

Вы когда-нибудь проходили мимо этого? Я просто столкнулся с этим сейчас. Это так странно, ''можно только повторить, если статус завершен. Статус был завершен." ' – makhdumi

ответ

0

После изучения разницы между запросом, посланного $qb.retry(); $qb.Save() и правой кнопкой мыши повторить Visual Studio, я обнаружил, что звонки должны быть:

qb.Retry([Guid]::NewGuid(), "Completed") 
qb.Save() 

В retryOption должно быть передано в явном виде Completed, или он по умолчанию будет InProgress.

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