共用方式為


可自訂的 Team Foundation Build 目標

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

在完成編譯之後呼叫。 請將您的工作插入此目標,以便在編譯程式碼檔之後執行自訂工作。

BeforeGetChangesetsAndUpdateWorkItems

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

AfterGetChangesetsAndUpdateWorkItems

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

BeforeTest

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

BeforeTestConfiguration

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

AfterTestConfiguration

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

AfterTest

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

BeforeDropBuild

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

AfterDropBuild

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

BeforeCreateWorkItem

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

AfterCreateWorkItem

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

BeforeOnBuildBreak

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

AfterOnBuildBreak

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

GenerateDocumentation

這是空目標。 請將您的工作插入此目標,以便在進行建置期間產生文件。

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

您所撰寫的工作程式碼必須搭配目標。 如需詳細資訊,請參閱 工作撰寫。 若要撰寫自訂工作,您必須依照下列步驟進行。

  1. 撰寫工作程式碼,並確定組建電腦上有可使用的已建置二進位檔,這可藉由在 TfsBuild.proj 檔案中提供原始檔控制路徑,或是讓組建電腦本身擁有可使用的二進位檔。

    注意事項注意事項

    將工作程式碼簽入原始檔控制中,這是良好但不是絕對必要的程式碼撰寫方式。

  2. 使用 UsingTask MSBuild 項目宣告自訂工作,藉以在 TfsBuild.proj 檔案中註冊此自訂工作。

    如需詳細資訊,請參閱 UsingTask 項目 (MSBuild)

    <UsingTask 
        TaskName="MyTasks.SimpleTask" 
        AssemblyName="MyAssembly.Build.Tasks"/>
    
  3. 在 TfsBuild.proj 檔案中將工作插入所要的目標,執行此工作。

    <Target Name="BeforeGet">
        <SimpleTask />
    </Target>
    
    注意事項注意事項

    加入這個標記會發生 XML 結構描述警告。 您可以安心地忽略那些警告。

  4. 在組建電腦上部署包含自訂工作的 DLL。

    重要事項重要事項

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

目標執行順序

目標的執行順序是根據 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. BeforeDropBuild

  38. CoreDropBuild

  39. AfterDropBuild

  40. 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. BeforeDropBuild

  38. CoreDropBuild

  39. AfterDropBuild

  40. AfterEndToEndIteration

以下是在 CoreCompile 目標執行期間發生錯誤時會執行的目標清單。 您可以覆寫以粗體文字顯示的目標。

  1. SetBuildBreakProperties

  2. BeforeOnBuildBreak

  3. GetChangesetsOnBuildBreak

  4. BeforeDropBuild

  5. CoreDropBuild

  6. AfterDropBuild

  7. BeforeCreateWorkItem

  8. CoreCreateWorkItem

  9. AfterCreateWorkItem

  10. CoreOnBuildBreak

  11. AfterOnBuildBreak

請參閱

概念

認識 Team Foundation Build 組態檔

可自訂的 Team Foundation Build 屬性