可自訂的 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 |
這是空目標。 請將您的工作插入此目標,以便在進行建置期間產生文件。 |
覆寫目標以便執行自訂工作
您所撰寫的工作程式碼必須搭配目標。 如需詳細資訊,請參閱 工作撰寫。 若要撰寫自訂工作,您必須依照下列步驟進行。
撰寫工作程式碼,並確定組建電腦上有可使用的已建置二進位檔,這可藉由在 TfsBuild.proj 檔案中提供原始檔控制路徑,或是讓組建電腦本身擁有可使用的二進位檔。
注意事項 將工作程式碼簽入原始檔控制中,這是良好但不是絕對必要的程式碼撰寫方式。
使用 UsingTask MSBuild 項目宣告自訂工作,藉以在 TfsBuild.proj 檔案中註冊此自訂工作。
如需詳細資訊,請參閱 UsingTask 項目 (MSBuild)。
<UsingTask TaskName="MyTasks.SimpleTask" AssemblyName="MyAssembly.Build.Tasks"/>
在 TfsBuild.proj 檔案中將工作插入所要的目標,執行此工作。
<Target Name="BeforeGet"> <SimpleTask /> </Target>
注意事項 加入這個標記會發生 XML 結構描述警告。 您可以安心地忽略那些警告。
在組建電腦上部署包含自訂工作的 DLL。
重要事項 每一個由您自訂的 TfsBuild.proj 檔案關聯的組建定義都會受到變更的影響。
目標執行順序
目標的執行順序是根據 CleanCompilationOutputOnly 屬性的值。 如果 CleanCompilationOutputOnly 是 true,則初始狀態的目標 (BeforeClean、CoreClean 和 AfterClean) 會在取得和標籤目標 (BeforeGet、CoreGet、AfterGet、BeforeLabel、CoreLabel 和 AfterLabel) 之後執行。 如果 CleanCompilationOutputOnly 屬性是 false,則初始狀態的目標會在取得和標籤目標之前執行。 如果 CleanCompilationOutputOnly 是 true,則在 CoreClean 目標執行期間,只會從來源目錄刪除中繼組件 (Assembly)。 如果這個屬性設定為 false,則在 CoreClean 目標執行期間將會刪除整個來源目錄。
下表顯示排序過且根據 CleanCompilationOutputOnly 是 true 或 false 而執行的目標清單。 您可以覆寫以粗體文字顯示的目標。
CleanCompilationOutputOnly = true |
CleanCompilationOutputOnly = false |
---|---|
|
|
以下是在 CoreCompile 目標執行期間發生錯誤時會執行的目標清單。 您可以覆寫以粗體文字顯示的目標。
SetBuildBreakProperties
BeforeOnBuildBreak
GetChangesetsOnBuildBreak
BeforeDropBuild
CoreDropBuild
AfterDropBuild
BeforeCreateWorkItem
CoreCreateWorkItem
AfterCreateWorkItem
CoreOnBuildBreak
AfterOnBuildBreak