MSBuild 工作
組建平台必須能夠在建置程序中執行任意數量的動作。 MSBuild 是使用 <工作> 執行這些動作。 工作是 MSBuild 用來執行原子建置作業的可執行程式碼單元。
工作邏輯
MSBuild XML 專案檔格式無法自行完整執行建置作業,因此必須在專案檔外部實作工作邏輯。
工作的執行邏輯都會實作為 ITask 介面的 .NET 類別實作,它是在 Microsoft.Build.Framework 命名空間中所定義。
工作類別亦定義該工作可在專案檔中使用的輸入和輸出參數。 工作類別公開 (Expose) 的所有可設定、非靜態、非抽象的公用屬性 (Public Property),都可以在專案檔中藉由放置與 Task 項目上同名的對應屬性 (Attribute) 來存取。
若想撰寫自己的工作,可以撰寫實作 ITask 介面的 Managed 類別。 如需詳細資訊,請參閱 工作撰寫。
從專案檔執行工作
在專案檔中執行工作之前,必須先將實作該工作的組件中的型別,對應到 UsingTask 項目的工作名稱。 如此可讓 MSBuild 在專案檔中搜尋時,得知尋找工作的執行邏輯的位置。
若要在 MSBuild 專案檔中執行工作,請使用工作的名稱建立一個項目做為 Target 項目的子項目。 如果工作接受參數,則這些參數會做為項目的屬性傳遞。
MSBuild 項目清單和屬性都可用來做為參數。 例如,下列程式碼會呼叫 MakeDir 工作,並將 MakeDir 物件的 Directories 屬性值設為等於上一個範例中所宣告 BuildDir 屬性的值。
<Target Name="MakeBuildDirectory">
<MakeDir
Directories="$(BuildDir)" />
</Target>
工作亦可將資訊傳回至專案檔,並將其儲存到項目或屬性中,以供日後使用。 例如,下列程式碼會呼叫 Copy 工作,並將來自 CopiedFiles 輸出屬性的資訊儲存到 SuccessfullyCopiedFiles 項目清單中。
<Target Name="CopyFiles">
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="@(MyDestFolder)">
<Output
TaskParameter="CopiedFiles"
ItemName="SuccessfullyCopiedFiles"/>
</Copy>
</Target>
已包含工作
MSBuild 附有許多工作,例如複製檔案用的 Copy、建立目錄用的 MakeDir,以及編譯 Visual C# 原始程式碼檔用的 Csc。 如需可用工作的完整清單和用法的相關資訊,請參閱 MSBuild 工作參考。
覆寫的工作
MSBuild 會在幾個位置尋找工作。 第一個位置是副檔名為 .OverrideTasks 的檔案,這些檔案保存在 .NET Framework 目錄中。 這些檔案中的工作會覆寫任何其他相同名稱的工作,包括專案檔中的工作。 第二個位置是副檔名為 .Tasks 的檔案,這些檔案同樣位於 .NET Framework 目錄中。 如果在這些位置都找不到工作,則會使用專案檔中的工作。