將預設範本用於您的建置流程

您可以使用預設範本 (TFVC 圖示 TfvcTemplate.12.xaml 或 Git 圖示 GitTemplate.12.xaml) 快速定義建置和測試程式碼的基本流程。 您可以選擇控制 Team Foundation Build (TFBuild) 建置程式碼、執行測試,以及執行其他處理序 (例如指令碼) 的方式。

開始使用

  1. (選擇性) 在您建立新的組建定義之前,從 Team Explorer 首頁 (快速鍵:CTRL + 0、H) 開啟您要建置的方案,在 [專案] 方塊中自動指定該方案。

  2. 在 [Team Explorer] 中,確認您已連接到 Team 專案 (鍵盤:Ctrl + 0、C),然後開啟 [組建] 頁面 (鍵盤:Ctrl + 0、B)。

  3. 選擇 [新增組建定義] 連結或選取組建,開啟內容功能表,然後選擇 [編輯組建定義]。

    提示

    如果出現 TF225001 錯誤訊息,請設定組建控制器

  4. 在 [流程] 索引標籤的 [建置流程範本] 下,[預設範本] 預設為已選取。

    預設範本建置流程

    警告

    是否連接至 Visual Studio Online 上所裝載的 Git 圖示 Git Team 專案?您是否遺漏 [簽出覆寫] 和 [專案] 參數?

    來自錯誤 Git 預設範本的參數

    請參閱如何判斷我使用的是 Visual Studio Online 的正確預設 Git 建置流程範本?

  5. 使用本主題稍後的資訊,來完成提供功能的欄位,這些功能是您要放入此組建定義的功能。

  6. 當您完成 [流程] 索引標籤上的欄位之後,請指定其他索引標籤上的建置流程選項。

    如需詳細資訊,請參閱建立或編輯組建定義

接下來您想要做什麼?

  • 取得程式碼

  • 建置程式碼

    • 指定要建置的專案

    • 指定要建置的平台和組態

    • 指定建置選項

  • 測試您的程式碼並分析測試影響

  • 在建置期間執行其他處理序

  • 控制伺服器如何執行您的組建

    • 指定處理組建的組建代理程式

    • 指定組建代理程式時間限制

  • 控制建置結果

    • 指定組建輸出位置

    • 為已完成組建設定對小組有用處的名稱

    • 從組建發行符號

    • 關聯與建立工作項目

    • 在失敗時建立工作項目

    • 標示您的原始程式碼

  • 取得常見問題的解答

取得程式碼

您可以在 [來源設定] 索引標籤上針對組建代理程式如何取得您所指定的原始程式碼設定選項。

如果想要…

然後設定此參數…

依照下列指引…

指定是否要在組建代理程式處理組建之前清除其工作區或 Git 儲存機制

TFVC 圖示 TFVC:清除工作區

Git 圖示 Git:清除儲存機制

若要在處理組建之前刪除所有現有的輸出和原始程式碼檔案,請選取 [True]。 如果要編譯流程從多個方面盡可能詳盡地公開建置流程的問題,請使用這個選項。

提示

如果建置流程不需要乾淨的工作區或儲存機制,設定這個參數值為 [False] 則可以大幅縮短執行組建所需的時間。

如果您使用裝載的組建控制器,則此設定沒有任何影響。 在這種情況下,您會取得每個組建的新工作目錄。

建置原始程式碼的特定版本

TFVC 圖示 TFVC:取得版本

Git 圖示 Git:簽出覆寫

TFVC:指定可識別您想要建置之版本的 versionspec

Git:指定要簽出的分支或認可 ID。

建置程式碼

您可以使用 MSBuild 編譯您的程式碼。

指定要建置的專案

在 [建置] 下的 [專案] 方塊中的 [建置流程參數] 資料表中,您可以指定一個或多個要建置的方案或程式碼專案。 您至少必須指定一個方案或專案。

如果您要建置許多相關的專案,通常應該要將它們加入至單一方案,然後在 [專案] 儲存格中指定該方案,而非個別列出每個專案。

在 [專案] 方塊中,您可以選擇省略符號按鈕 (...) 開啟並使用 [方案/專案] 對話方塊來指定要建置的方案或專案。

若要手動填入 TFVC Team 專案的 [專案] 方塊,請指定您想要建置之每個專案或方案的完整版本控制路徑, 並以逗號分隔每個值,如下列範例所示:

$/Features/FeatureA/Server/All Server Projects.sln, $/Features/FeatureA/Client/All Client Projects.sln

重要

如果您使用 TFVC,請確定每個專案或方案的路徑都是組建定義 [來源設定] 索引標籤上所列之其中一個 [原始檔控制資料夾] 值的子系。如果您使用 Git,請確定專案或方案是在 Git 儲存機制中,在您要建置的分支中。

指定要建置的平台和組態

在 [組態] 方塊中,您可以指定想要建置的平台和組態。 例如,您可以在這個方塊中加入 Release|x86,藉以指定此組建應該只建置 C++ 專案 32 位元版本的發行組態。

提示

如果您擁有大型程式碼基底,就可以透過只建置所需的組態和平台,大幅提高組建的處理速度。

如果您將 [組態] 方塊保留空白,就會建置每個方案或專案中定義的預設組態和平台。

在 [組態] 方塊中,您可以選擇省略符號按鈕 (...) 開啟並使用 [組態] 對話方塊來指定要建置的項目。 您也可以用手動方式指定它們。

[組態] 方塊中的每個組態應為下列格式:

組態|平台

您必須取代下列預留位置:

  • 組態 是一個值,例如 Debug、Release 或 All Configurations。

  • 平台 是一個值,例如 Win32、x86、x64 或 Any CPU。

清單中的組態必須以逗號分隔。

例如,如果您想要同時建置 C# 專案的偵錯和發行組態,就要在 [組態] 方塊中指定 Debug|Any CPU、Release|Any CPU。

您用於組態和平台的語彙基元必須符合在方案屬性或程式碼專案屬性中設定的語彙基元。 如果它們不相符,您可能會在組建完成時遇到非預期的結果。

注意事項注意事項

如果您建立的是個別程式碼專案而不是方案檔,而且您想要指定 Any CPU 為平台,則應指定為 AnyCPU 而不是 Any CPU。

指定建置選項

您可以控制數個建置選項。

如果想要…

然後設定此參數…

依照下列指引…

控制是否要重建

[建置]、[清除組建]

如果您要重建在程式碼專案中的所有程式碼,則設定為 True。 這相當於 MSBuild /target:clean。 除非您也將 [清除儲存機制] 設定為 [False],否則這個選項沒有實際效用。

提示

將此選項設為 [False] 可以大幅縮短建置大型程式碼基底所需的時間。

針對圖層圖表驗證程式碼

[建置]、[進階]、[MSBuild 引數]

在這個參數值中加入下列字串:/p:ValidateArchitecture=true。

如需詳細資訊,請參閱使用圖層圖表驗證程式碼

指定要傳遞至 MSBuild 的命令列引數

[建置]、[進階]、[MSBuild 引數]

如果建置流程需要您將引數傳遞至 MSBuild,請在 [MSBuild 引數] 參數中輸入這些引數。 如需詳細資訊,請參閱MSBuild 命令列參考

指定用來處理組建的 MSBuild 版本的位元

[建置]、[進階]、[MSBuild 平台]

指定下列其中一個值:

  • 如果您想要以與組建代理程式上安裝的 Team Foundation Build Service 相同的 CPU 位元來執行 MSBuild,請指定 [自動]。

  • 指定 [X86] 會一律以 32 位元版本的 MSBuild 處理此組建。

    由於 Visual Studio 是做為 32 位元的應用程式執行,因此當執行 64 位元版本 Team Foundation Build Service 的組建代理程式處理您的組建時,可能會發生問題。 指定 [X86] 應該可以解決這類的問題。

如果指定此值,則應該要確定 (例如使用本主題稍早說明的標記) 組建會由 64 位元組建電腦上裝載的組建代理程式處理。 否則將無法進行建置。

執行其他處理序

您可以在建置期間執行其他處理序。

執行程式碼分析

若要在建置期間尋找常見缺失,可以分析您的程式碼。 在進階建置參數中設定 [執行程式碼分析] 參數。

  • 若要分析啟用這項功能的每個程式碼專案,請選取 [依照設定]。

  • 若要分析每個程式碼專案,不論這些程式碼專案是否啟用這項功能,請選取 [永遠]。

  • 若要略過程式碼分析,請選取 [永遠不要]。

如需詳細資訊,請參閱下列其中一個主題:

控制伺服器如何執行您的組建

您可以控制建置伺服器如何執行您的組建

指定處理組建的組建代理程式

若要指定用來處理組建的組建代理程式,請依序展開 [進階] 節點和 [代理程式設定] 節點,然後為下列參數指定值:

  • 名稱篩選:您可以篩選用來處理此組建定義的組建代理程式,方法是在此欄位中輸入代理程式的名稱。 您可以使用 *? 萬用字元指定一組名稱。 例如,您可以指定 CI* 以指定名稱以字元 CI 開頭的任何代理程式。 符合此準則的代理程式包括 CI、CI1 或 CI_Agent2。

  • 標記篩選:指定一個或多個標記,以確保只有具備相符標記的組建代理程式會執行此組建。 您通常會將標記套用至某些組建代理程式,以保留供特殊目的使用。 例如,您在組建電腦上設定一個專為處理您的閘道簽入組建所設計的組建代理程式。 您將閘道標記套用至此組建代理程式。 最後,您將閘道標記套用至組建定義,使其只能由也以閘道標記加註的代理程式處理。 若要指定標記,請選擇省略符號按鈕 (...)。

    注意事項注意事項

    可用於處理此組建的組建代理程式集,是由您指定給此組建定義的組建控制器所決定。若要修改組建控制器,請選擇 [組建預設值] 索引標籤,然後開啟 [組建控制器] 功能表,再選擇組建控制器。

  • 標記比較運算子:在功能表上選擇下列其中一個值:

    • MatchExactly:如果您要此組建定義只由指定的組建代理程式 (具有您在 [標記篩選] 方塊中指定的一組完全相同的標記) 處理,請選擇這個值。 如果您沒有指定任何標記,任何代理程式都能處理此組建定義。

      提示

      選擇 [MatchExactly],會將此組建定義可用的代理程式限制為僅限那些具有一組完全相符的標記 (位於 [標記篩選] 欄位) 的代理程式。

    • MatchAtLeast:如果您要此組建定義由任何組建代理程式 (至少具有您在 [標記篩選] 方塊中指定的一組相同的標記) 處理,請選擇這個值。 如果您沒有指定任何標記,只有沒有標記的代理程式才能處理此組建定義。

指定組建代理程式時間限制

若要指定時間限制,請依序展開 [進階] 節點、[代理程式設定] 節點,然後指定下表中的參數。

如果想要…

然後設定此參數…

依照下列指引…

指定允許組建代理程式處理組建的最大時間

最長執行時間

以 hh:mm:ss 格式輸入時間範圍值。 例如,如果您指定的值為 04:30:15,而組建代理程式在 4 小時 30 分 15 秒後未完成其工作,則建置將會失敗且具有逾時錯誤。 如果您要提供組建代理程式無限制的時間來處理組建,請指定值 00:00:00。

指定將組建要求指派至組建代理程式所允許的最大時間

最長等待時間

以 hh:mm:ss 格式輸入時間範圍值。 例如,如果您指定的值為 01:30:45,而組建在 1 小時 30 分 45 秒後仍未指派組建代理程式,則建置將會失敗且具有逾時錯誤。 如果您要提供組建控制器無限制的時間來尋找用以處理此組建定義的組建代理程式,請指定值 00:00:00。

控制建置結果

指定組建輸出位置

若要控制 TFBuild 組建輸出的位置,請選取:

  • SingleFolder,將所有組建輸出檔一起放在置放資料夾

  • PerProject,針對您在專案方塊中指定的每個方案或程式碼專案,將組建輸出群組到置放資料夾子資料夾。

  • AsConfigured,表示要將二進位檔保留在組建代理程式來源資料夾中,並組織成您在開發電腦上以 Visual Studio 建置程式碼時看到的相同子資料夾結構。 這個結構是在您的程式碼專案中定義。

    如果您使用這個選項,TFBuild 不會將輸出複製到置放資料夾。 您可以改為將指令碼設計為將輸出複製到 TF_BUILD_BINARIESDIRECTORY 指定的位置,以便將它們放入預備環境位置。 請參閱建置後或測試後指令碼

為已完成組建設定對小組有用處的名稱

您和小組可以使用 [進階]、[組建編號格式] 將實用資料載入到每個已完成組建的名稱。 如需此參數的有效值,請參閱使用組建編號提供有意義的名稱給已完成的組建

從組建發行符號

指定 [發行符號的路徑] 參數來編製索引及發行符號資料,以啟用歷程偵錯等功能。 請參閱 建立索引和發行符號資料

關聯變更集、認可與工作項目

建置流程會自動將每個已完成組建與進入程式碼的所有變更集或認可,及其相關聯的工作項目連結在一起。 您無法停用這個行為,不過,在 [進階] 下您可以選取 [True] 或 [False],決定是否要 [使用組建編號更新工作項目]。

建置流程如何決定何時要關聯變更集、認可與工作項目?

在失敗時建立工作項目

對於 [進階]、[在失敗時建立工作項目],如果在建置失敗時,您要讓建置流程建立 Bug 並將其指派給 TFVC 圖示 簽入 TFVC 變更集Git 圖示 推送 Git 認可的人,請選取 [True]。

標示您的原始程式碼

對於 TFVC 圖示 [TF 版本控制]、[標籤來源],如果您想要以標籤自動標記每個原始程式碼檔,讓您的小組輕鬆地識別在已完成組建中所包含每個檔案的版本,請選取 [True]。 此設定不適用於 Git 圖示 Git Team 專案。

如需 TFBuild 如何判定要標示的版本的詳細資訊,請參閱該組建的良好程度為何? (英文)。

問與答

如何判斷我使用的是 Visual Studio Online 的正確預設 Git 建置流程範本?

是否連接至 Visual Studio Online 上所裝載的 Git 圖示 Git Team 專案? 您是否遺漏 [簽出覆寫] 和 [專案] 參數?

當您顯示詳細資料時,是否會出現 [預設範本 (GitTemplate.xaml)]?

錯誤的 Git 預設範本

如果是,請選取 [GitTemplate.12.xaml]。 之後,就會出現 [簽出覆寫] 參數和 [專案] 參數中的瀏覽按鈕。

正確的 Git 預設範本

問:建置流程如何決定何時要關聯變更集、認可與工作項目?

**答:**每個組建定義都會自行維護哪些變更集 (TFVC)、認可 (Git) 和工作項目正等候與下一個完成組建產生關聯的記錄。

例如,變更集 382 是由組建 A 和組建 B 所建置。 組建 A 已排入佇列並成功完成。 組建 B 已排入佇列但失敗。 接著,變更集 382 會與組建 A 的成功完成組建和組建 B 的失敗完成組建連結在一起。雖然變更集 382 不會與組建 A 的下一個完成組建連結在一起,不過它會與組建 B 的下一個完成組建連結在一起。

如需 TFBuild 如何判定要關聯的版本的詳細資訊,請參閱該組建的良好程度為何? (英文)。

問:我需要我的建置流程來進行其他動作。我該如何自訂?

答:自訂流程