2011-11-03 218 views
20

我有一個構建定義以在我的TFS上構建解決方案。 這個效果很好,但它始終構建最新版本。TFS構建特定的變更集並使用變更集號進行部署

  1. 我該如何強制建立過去的特定變更集?

  2. 如何將此編號傳遞給「MSBuild參數」以將其用於部署?

+0

以何種方式將變更集號用於部署? –

+0

我想使用它的部署路徑: /p:DeployIisAppPath =/changeset/CHANGESETNUMBER – Konrad

回答

10

你的第一個問題的答案顯然是@Dylan所說的。

到第二部分:
重要的論據是GetVersion。 導航到活動構建過程模板內「運行的MSBuild項目」,默認情況下,這有CommandLineArguments等於

String.Format("/p:SkipInvalidConfigurations=true {0}", MSBuildArguments)

值可以像

String.Format("/p:SkipInvalidConfigurations=true {0} /p:DeployIisAppPath=/changeset/{1}", MSBuildArguments, GetVersion)

改變它的東西並得到你需要去的地方。

+0

創建新模板是一種方法。我只需要將「GetVersion」更改爲「BuildDetail.SourceGetVersion」以獲取最新版本:-) – Konrad

+0

我目前的*生成過程文件*設置爲* TfvcContinuousDeploymentTemplate.xaml *,但是我找不到該文件* BuildProcessTemplates *文件夾。 – Shimmy

28

當您從團隊資源管理器中排隊構建時,在「參數」選項卡中,其中一個高級參數是get版本。

注意:我認爲您需要以C123格式指定此處,其中123是變更集編號。

+0

謝謝......這意味着第一個問題......但我怎樣才能將此參數(C1234)傳遞給MSBuild參數使用它進行部署? – Konrad

+2

這是在工作流參數之一中,當設置傳遞給msbuild的參數(您必須自定義構建工作流程)時,您可以訪問 –

+0

對我無效 – mbx

0

如果您使用變更集編號,那麼它只會對CI構建有意義,因爲它們通常會構建單個變更集。

對於任何其他種類的構建,我建議使用構建ID,這是唯一的,並涵蓋構建多個變更集的構建案例。