共用方式為


可自訂的 Team Foundation Build 目標

更新:2007 年 11 月

MSBuild 目標 (Target) 會定義 MSBuild 專案的建置 (Build) 方式。Microsoft.TeamFoundation.Build.targets 檔會針對用於所有 Team Foundation Build 類型的 Team Foundation Build,定義目標階層及一組預先定義的 MSBuild 工作和目標。所有組建定義都包含名為 TfsBuild.proj 的專案檔。專案檔可以只與一個組建定義產生關聯,或與多個組建定義產生關聯。TfsBuild.proj 會匯入 Microsoft.TeamFoundation.Build.targets 檔,並提供各種屬性和項目群組的值。您可以自訂 TfsBuild.proj 檔,覆寫階層中的某些擴充點目標。這些目標檔都位於組建代理程式上的 <root>:\Program Files\MSBuild\Microsoft\VisualStudio\TeamBuild 中。

重要事項:

請勿修改 Microsoft.TeamFoundation.Build.targets 檔。

如需 MSBuild 目標的詳細資訊,請參閱 MSBuild 目標

可以使用工作自訂的目標

工作包含在目標中。提供程式碼的工作,這些程式碼會在建置程序中執行。下表將列出針對擴充性定義的所有 Team Foundation Build 目標。必須在建置程序期間執行自訂工作時,請將工作插入其中一個目標。

注意事項:

我們不建議您覆寫其他目標。

目標名稱

描述

BeforeEndToEndIteration

將工作插入這個目標,以在建置程序剛開始時執行自訂工作。

AfterEndToEndIteration

請將您的工作插入此目標,以便在建置程序的結尾處執行自訂工作。

BeforeInitializeWorkspace

請將您的工作插入此目標,以便在工作區初始化之前執行自訂工作。

AfterInitializeWorkspace

請將您的工作插入此目標,以便在工作區初始化之後執行自訂工作。

BuildNumberOverrideTarget

請將您的工作插入此目標,以便自訂組建編號或置放位置等屬性。您所撰寫的工作必須建立名為 BuildNumber 的輸出屬性。

BeforeClean

在嘗試清除之前呼叫。請將您的工作插入此目標,以便執行預先清除自訂工作。

AfterClean

在完成清除之後呼叫。請將您的工作插入此目標,以便執行事後清除自訂工作。

BeforeGet

從原始檔控制擷取原始檔之前呼叫。請將您的工作插入此目標,以便在擷取原始檔之前執行自訂工作。

AfterGet

在擷取原始檔之後呼叫。請將您的工作插入此目標,以便在擷取原始檔之後執行自訂工作。

BeforeLabel

在標記原始檔之前呼叫。請將您的工作插入此目標,以便在 Label 目標之前執行自訂工作。

AfterLabel

在完成標記之後呼叫。請將您的工作插入此目標,以便在 Label 目標之後執行自訂工作。

BeforeCompile

在開始編譯 (Compilation) 之前呼叫。請將您的工作插入此目標,以便在編譯程式碼檔之前執行自訂工作。

BeforeCompileConfiguration

請將您的工作插入此目標,以便在個別組態編譯 (Compilation) 之前執行自訂工作。

BeforeCompileSolution

請將您的工作插入此目標,以便在個別方案編譯之前執行自訂工作。

AfterCompileSolution

將工作插入這個目標,以在編譯個別方案之後執行自訂工作。

AfterCompileConfiguration

請將您的工作插入此目標,以便在個別組態編譯之後執行自訂工作。

AfterCompile

在完成編譯之後呼叫。請將您的工作插入此目標,以便在編譯程式碼檔之後執行自訂工作。如需範例,請參閱 逐步解說:設定 Team Build 以建置 Visual Studio 安裝專案

BeforeGetChangesetsAndUpdateWorkItems

請將您的工作插入此目標,以便在與變更集產生關聯與更新工作項目之前執行自訂工作。

AfterGetChangesetsAndUpdateWorkItems

請將您的工作插入此目標,以便在與變更集產生關聯與更新工作項目之後執行自訂工作。

BeforeTest

在執行測試之前呼叫。請將您的工作插入此目標,以便在 Test 目標之前執行自訂工作。

BeforeTestConfiguration

請將您的工作插入此目標,以便在測試個別組態之前執行自訂工作。

AfterTestConfiguration

請將您的工作插入此目標,以便在測試個別組態之後執行自訂工作。

AfterTest

在完成測試之後呼叫。請將您的工作插入此目標,以便在 Test 目標之後執行自訂工作。

BeforeDropBuild

將已建置的二進位碼檔案、建置記錄檔及測試結果儲存至發行伺服器上的組建置放目錄之前呼叫。請將您的工作插入此目標,以便在已建置的檔案儲存至置放目錄之前執行自訂工作。

AfterDropBuild

將已建置的二進位碼檔案、建置記錄檔及測試結果置放至發行伺服器之後呼叫。請將您的工作插入此目標,以便在已建置的檔案儲存至置放目錄之後執行自訂工作。

BeforeCreateWorkItem

請將您的工作插入此目標,以便在建立工作項目之前執行自訂工作。

AfterCreateWorkItem

請將您的工作插入此目標,以便在建立工作項目之後執行自訂工作。

BeforeOnBuildBreak

在因為建置中斷而建立工作項目之前呼叫。請將您的工作插入此目標,以便在 BuildBreak 目標之前執行自訂工作。

AfterOnBuildBreak

在因為建置中斷而建立工作項目之後呼叫。請將您的工作插入此目標,以便在 BuildBreak 目標之後執行自訂工作。

GenerateDocumentation

這是空目標。請將工作插入這個目標,以在建置程序期間自動產生文件。

覆寫目標以便執行自訂工作

您所撰寫的工作程式碼必須搭配目標,而且組建電腦上必須有可使用的已建置二進位檔,這可藉由在 TfsBuild.proj 檔內提供原始檔控制路徑,或是讓組建電腦本身擁有可使用的二進位檔。您也必須使用 UsingTaskMSBuild 項目宣告自訂工作,藉以在 TfsBuild.proj 檔中註冊此自訂工作。如需詳細資訊,請參閱UsingTask 項目 (MSBuild)。最後,在組建電腦上部署包含自訂工作的 DLL。

重要事項:

每一個由您自訂的 TfsBuild.proj 檔案關聯的組建定義都會受到變更的影響。

如需自訂工作之端對端實作 (Implementation) 的範例,請參閱逐步解說:使用自訂工作自訂 Team Foundation Build

目標執行順序

目標的執行順序是根據 CleanCompilationOutputOnly 屬性的值。如果 CleanCompilationOutputOnly 是 true,則初始狀態的目標 (BeforeCleanCoreCleanAfterClean) 會在取得和標籤目標 (BeforeGetCoreGetAfterGetBeforeLabelCoreLabelAfterLabel) 之後執行。如果 CleanCompilationOutputOnly 屬性是 false,則初始狀態的目標會在取得和標籤目標之前執行。如果 CleanCompilationOutputOnly 是 true,則在 CoreClean 目標執行期間,只會從來源目錄刪除中繼組件 (Assembly)。如果這個屬性設定為 false,則在 CoreClean 目標執行期間將會刪除整個來源目錄。

下表顯示排序過且根據 CleanCompilationOutputOnly 是 true 或 false 而執行的目標清單。您可以覆寫的目標會標明出來。

CleanCompilationOutputOnly = true

CleanCompilationOutputOnly = false

  1. InitializeBuildProperties

  2. BeforeEndToEndIteration (可以覆寫)

  3. BuildNumberOverrideTarget (可以覆寫)

  4. InitializeEndToEndIteration

  5. BeforeInitializeWorkspace (可以覆寫)

  6. CoreInitializeWorkspace

  7. AfterinitializeWorkspace (可以覆寫)

  8. InitializeBuild

  9. BeforeGet (可以覆寫)

  10. CoreGet

  11. AfterGet (可以覆寫)

  12. BeforeLabel (可以覆寫)

  13. CoreLabel

  14. AfterLabel (可以覆寫)

  15. BeforeClean (可以覆寫)

  16. CoreCleanCompilationOutput

  17. AfterClean (可以覆寫)

  18. BeforeCompile (可以覆寫)

  19. CoreCompile (針對每個平台/組態的組合)

  20. BeforeCompileConfiguration (可以覆寫)

  21. CoreCompileConfiguration (針對要建置的每個方案)

  22. BeforeCompileSolution (可以覆寫)

  23. CoreCompileSolution

  24. AfterCompileSolution (可以覆寫)

  25. AfterCompileConfiguration (可以覆寫)

  26. AfterCompile (可以覆寫)

  27. BeforeGetChangesetsAndUpdateWorkItems (可以覆寫)

  28. CoreGetChangeSetsAndUpdateWorkItems

  29. AfterGetChangesetsAndUpdateWorkItems (可以覆寫)

  30. BeforeTest (可以覆寫)

  31. CoreTest (針對每個平台/組態的組合)

  32. BeforeTestConfiguration (可以覆寫)

  33. CoreTestConfiguration

  34. AfterTestConfiguration (可以覆寫)

  35. AfterTest (可以覆寫)

  36. GenerateDocumentation (可以覆寫)

  37. PackageBinaries (可以覆寫)

  38. BeforeDropBuild (可以覆寫)

  39. CoreDropBuild

  40. AfterDropBuild (可以覆寫)

  41. AfterEndToEndIteration (可以覆寫)

  1. InitializeBuildProperties

  2. BeforeEndToEndIteration (可以覆寫)

  3. BuildNumberOverrideTarget (可以覆寫)

  4. InitializeEndToEndIteration

  5. BeforeInitializeWorkspace (可以覆寫)

  6. CoreInitializeWorkspace

  7. AfterInitializeWorkspace (可以覆寫)

  8. BeforeClean (可以覆寫)

  9. CoreClean

  10. AfterClean (可以覆寫)

  11. InitializeBuild

  12. BeforeGet (可以覆寫)

  13. CoreGet

  14. AfterGet (可以覆寫)

  15. BeforeLabel (可以覆寫)

  16. CoreLabel

  17. AfterLabel (可以覆寫)

  18. BeforeCompile (可以覆寫)

  19. CoreCompile (針對每個平台/組態的組合)

  20. BeforeCompileConfiguration (可以覆寫)

  21. CoreCompileConfiguration (針對要建置的每個方案)

  22. BeforeCompileSolution (可以覆寫)

  23. CoreCompileSolution

  24. AfterCompileSolution (可以覆寫)

  25. AfterCompileConfiguration (可以覆寫)

  26. AfterCompile (可以覆寫)

  27. BeforeGetChangesetsAndUpdateWorkItems (可以覆寫)

  28. CoreGetChangeSetsAndUpdateWorkItems

  29. AfterGetChangesetsAndUpdateWorkItems (可以覆寫)

  30. BeforeTest (可以覆寫)

  31. CoreTest (針對每個平台/組態的組合)

  32. BeforeTestConfiguration (可以覆寫)

  33. CoreTestConfiguration

  34. AfterTestConfiguration (可以覆寫)

  35. AfterTest (可以覆寫)

  36. GenerateDocumentation (可以覆寫)

  37. PackageBinaries (可以覆寫)

  38. BeforeDropBuild (可以覆寫)

  39. CoreDropBuild

  40. AfterDropBuild (可以覆寫)

  41. AfterEndToEndIteration (可以覆寫)

以下是在 CoreCompile 目標執行期間發生錯誤時會執行的目標清單。您可以覆寫的目標會標明出來。

  1. SetBuildBreakProperties

  2. BeforeOnBuildBreak (可以覆寫)

  3. GetChangesetsOnBuildBreak

  4. BeforeDropBuild (可以覆寫)

  5. CoreDropBuild

  6. AfterDropBuild (可以覆寫)

  7. BeforeCreateWorkItem (可以覆寫)

  8. CoreCreateWorkItem

  9. AfterCreateWorkItem (可以覆寫)

  10. CoreOnBuildBreak

  11. AfterOnBuildBreak (可以覆寫)

請參閱

工作

HOW TO:撰寫工作

概念

瞭解 Team Foundation Build 組態檔

可自訂的 Team Foundation Build 屬性

Team Foundation Build 工作