2016-07-25 11 views
0

我正在使用TFS編輯構建定義,然後排隊。我擁有獲取構建服務器和構建本身所需的一切。我甚至可以對構建進行排隊,但是我不知道如何指定選項。構建是門控,當我手動排隊它們時,我必須指定「最新來源」,而不是「最新來源與擱置」,這似乎是默認設置。如何在Powershell中指定TFS構建選項?

下面是我在手動排隊構建時單擊的示例。

下面是我迄今編碼:

$teamProjectCollection = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection("$serverURI") 
$bs = $teamProjectCollection.GetService([type]"Microsoft.TeamFoundation.Build.Client.IBuildServer") 
$build = $bs.GetBuildDefinition("$project", "$template") 
#Here is where I would do all of the build editing, but it's not important. 
$request = $definition.CreateBuildRequest() 
$bs.QueueBuild($request, 「None」) 

此代碼的工作,但我不知道怎麼過來的「最新消息透露註明「最新源代碼」的選項與Shelveset「。誰能幫忙?

+0

我會期待是否指定'$ request.ShelvesetName'或不會確定([link](https://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.client.ibuildrequest .shelvesetname%28v = vs.120%29.aspx?f = 255&MSPPError = -2147217396)) –

回答

1

基於我的測試,如果ShelvesetName爲空,它將構建帶有最新源代碼的項目/解決方案,我們可以檢查構建日誌是否使用shelveset構建帶有最新源的項目(不包含有關shelveset的信息建立最新的資料)。

對於門控簽入版本,當我們通過VS UI進行隊列構建時,默認選項是帶有shelveset的最新源碼,但我們必須使用帶shelveset選項的最新源指定shelveset名稱,否則我們無法對構建進行隊列化。換句話說,shelveset名稱是帶有shelveset選項的最新源代碼所必需的。

因此,通過TFS API對構建進行排隊,我們只需要讓ShelvesetName爲null,以使用最新源排隊構建。

+0

因此,基本上,如果我沒有指定,它會默認爲「最新來源」,而不是Shelveset?如果這就是你的意思,那應該很容易。 – user3066571

+1

是的,你是對的。 –

+0

完美地工作,謝謝! – user3066571

相關問題