可自訂的 Team Foundation Build 屬性
MSBuild 屬性是關鍵值組,可以用來設定組建 (Build)。 如需詳細資訊,請參閱 MSBuild 屬性。
Microsoft.TeamFoundation.Build.targets 檔會針對 Team Foundation Build 定義許多 MSBuild 目標 (Target)、工作和屬性。 您可以在 TFSBuild.proj 檔中修改這些屬性以進行下列作業:
傳遞值給 Team Foundation Build 工作和目標
覆寫特定建置動作
如需 TFSBuld.proj 檔的詳細資訊,請參閱認識 Team Foundation Build 組態檔。
本文內容
自訂 Visual C++ 組建
用來自訂工作的屬性
可覆寫的屬性
下表將列出針對 Team Foundation Build 定義的屬性。 您可以在 TfsBuild.proj 檔中覆寫這些屬性,以自訂建置程序。 如需詳細資訊,請參閱 自訂 SolutionToBuild 項目群組。
屬性 |
說明 |
---|---|
BinariesRoot |
將此屬性設定為指向組建電腦上二進位檔資料夾的根目錄。 |
CleanCompilationOutputOnly |
將此屬性設定為 true,即可在 CoreClean 目標執行期間,只從來源目錄刪除中繼組件。 如果這個屬性設定為 false,則在 CoreClean 目標執行期間將會刪除整個來源目錄。 |
CustomizableOutDir |
想要防止 Team Foundation Build 設定每個方案的 OutDir 時,請將這個屬性設為 true。 請注意,如果 CustomizableOutDir 設為 false,則可以使用 TeamBuildOutDir 屬性來擷取 Team Foundation Build 已指派給 PublishDir 的值。 |
CustomizablePublishDir |
若要防止 Team Foundation Build 設定每個方案的 PublishDir 目錄,請將這個屬性設為 true。 請注意,如果 CustomizablePublishDir 設為 false,則可以使用 TeamBuildPublishDir 屬性來擷取 Team Foundation Build 已指派給 PublishDir 的值。 |
CustomPropertiesForBuild |
當 Team Foundation Build 呼叫其預設的目標 (通常為 Build) 時設定這個屬性,將自訂值傳遞給每個方案。 |
CustomPropertiesForClean |
當 Team Foundation Build 呼叫 Clean 目標時設定這個屬性,將自訂值傳遞給每個方案。 |
GetAllowUnmapped |
將此屬性設定為 false,即可在擱置集中有未對應的檔案時讓建置失敗 (適用於閘道簽入和私用組建)。 |
GetAutoMerge |
將此屬性設定為 false,即可在版本控制取得作業期間閘道簽入或私用組建中有任何衝突時,讓建置失敗。 |
GetNoCIOption |
將此屬性設定為 false,即可在執行閘道簽入組建時不將 ***NO_CI*** 字串插入簽入註解。 請注意,將此屬性設定為 false 時,會導致受影響的連續整合組建排入佇列。 |
IncrementalBuild |
將此屬性設定為 true,以進行累加建置 (Incremental Build) 作業。 這是一個快捷屬性,其中將 SkipClean 設定為 true,將 SkipInitializeWorkspace 設定為 true,並將 ForceGet 設定為 false。 |
IncrementalGet |
將此屬性設定為 true,以進行累加取得作業。 這是一個快捷屬性,其中將 CleanCompilationOutputOnly 設定為 true,將 SkipInitializeWorkspace 設定為 true,並將 ForceGet 設定為 false。 |
LabelComment |
設定此屬性來定義 Label 工作使用的註解。 |
LabelName |
設定此標籤名稱即可定義 Label 工作使用的名稱。 根據預設,標籤名稱會設定為 InitializeEndToEndIteration 目標中的 $(BuildNumber)。 |
OutDir |
設定此屬性來定義組建工作目錄中輸出檔的位置。 |
PerformTestImpactAnalysis |
將這個屬性設定為 false 即可停用測試影響分析。 |
PublishTestResults |
將這個屬性設定為 false 即可略過發行測試結果。 |
SkipClean |
設定此屬性即可略過 CoreClean 目標。 |
SkipDropBuild |
設定此屬性即可略過 CoreDropBuild 目標。 |
SkipGet |
設定此屬性即可略過 CoreGet 目標。 |
SkipGetChangesetsAndUpdateWorkItems |
將此屬性設定為 true,即可略過建置成功之變更集的關聯和工作項目的更新。 |
SkipInitializeWorkspace |
設定此屬性即可略過 CoreInitializeWorkspace 目標。 |
SkipInvalidConfigurations |
將這個屬性設為 false,即可在使用者遇到無效組態時會產生錯誤,而不是警告。 |
SkipLabel |
將此屬性設定為略過 CoreLabel 目標。 |
SkipPostBuild |
您可以設定這個屬性以便略過收集關聯之變更集和工作項目的動作。 |
SkipWorkItemCreation |
設定此屬性即可略過 CoreCreateWorkItem 目標。 |
SolutionRoot |
將此屬性設定為指向組建電腦上來源資料夾的根目錄。 |
StopOnFirstFailure |
將此屬性設定為 true,即可在建置執行期間第一次發生失敗時停止清除、編譯或測試。 |
UpdateAssociatedWorkItemsOnBuildBreak |
將此屬性設定為 true 以更新關聯的工作項目,即使組建已損毀也一樣。 |
自訂 Visual C++ 組建
Team Foundation Build 也支援自訂 Visual C++ 9.0 專案的建置。 您可以使用下列屬性在 MSBuild 使用的 VCBuild 工作上設定對應的屬性,以建置 Visual C++ 專案。 如需詳細資訊,請參閱 VCBuild Task。
Team Build 屬性 |
VCBuild 工作屬性 |
說明 |
---|---|---|
VCBuildAdditionalLibPaths |
AdditionalLibPaths |
指定在搜尋 LIB 環境變數路徑 (對應至 LINK.exe 的 LIBPATH 選項) 之前,要搜尋的其他程式庫路徑。 |
VCBuildAdditionalOptions |
AdditionalOptions |
指定其他不具有專屬工作參數的命令列選項。 |
VCBuildToolPath |
ToolPath |
指定 VCBuild 工作將會載入基礎可執行檔 (VCBuild.exe) 的位置。 |
VCBuildUseEnvironment |
UseEnvironment |
將此參數設定為 true,以使用 PATH、INCLUDE、LIBS 和 LIBPATH 的環境變數。 否則請將其設定為 false。 這個屬性對應至 VCBuild.exe 的 /useenv 選項。 如需詳細資訊,請參閱 /useenv。 |
AdditionalVCOverrides |
無 |
使用這個屬性可以指定由 Team Foundation Build 產生,以及在 VCBuild 工作之 Override 屬性內指定的 VCBuild 工作表檔的其他選項。 |
用來自訂工作的屬性
Microsoft.TeamFoundation.Build.targets 檔中的每個預設 Team Foundation Build 工作都包含一組可用來自訂工作的屬性。 如需 Team Foundation Build 工作的詳細資訊,請參閱 Team Foundation Build 工作。 例如,CreateNewWorkItem 定義如下。
<!-- Create WorkItem for build failure -->
<CreateNewWorkItem
TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
BuildUri="$(BuildUri)"
BuildNumber="$(BuildNumber)"
Description="$(WorkItemDescription)"
TeamProject="$(TeamProject)"
Title="$(WorkItemTitle)"
WorkItemFieldValues="$(WorkItemFieldValues)"
WorkItemType="$(WorkItemType)"
ContinueOnError="true" />
若要自訂在建置失敗時建立的工作項目,請在 TFSBuild.proj 檔中設定 WorkItemFieldValues:
注意事項 |
---|
下面會假設您已經同時設定了 Areapath 和 IterationPath 屬性。 |
<WorkItemFieldValues>Area Path=$(AreaPath);Iteration Path=$(IterationPath);Severity=1;Priority=0;Symptom=build break;Steps To Reproduce=Start the build using Team Build;Source=Development;How Found=Build Break;Assigned To=Active</WorkItemFieldValues>