共用方式為


MSBuild 批次處理

更新:2007 年 11 月

MSBuild 能夠根據項目中繼資料將項目集合分割成不同的分類或批次,並且一次執行每一批次的一項目標 (Target) 或工作。

工作批次處理

工作批次處理可讓您藉由提供將項目集合分割成不同批次,並分別將各批次傳遞至工作的方式簡化專案檔。這表示即使專案檔可多次執行,也只需要宣告工作及其屬性一次。

您可指定讓 MSBuild 利用工作執行批次處理,只要在其中一個工作屬性中使用 %(ItemMetaDataName) 標記法即可。下列範例會依據 Color 項目中繼資料值將 Example 項目集合分割成批次,並分別將各批次傳遞至 MyTask 工作。

注意事項:

如果您未在工作屬性中的其他位置參考項目集合,或中繼資料名稱可能模稜兩可,可使用 %(ItemCollection.ItemMetaDataName) 標記法將項目中繼資料值完整限定為用於批次處理。

<Project
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    
    <ItemGroup>
        <Example Include="Item1">
            <Color>Blue</Color>
        </Example>
        <Example Include="Item2">
            <Color>Red</Color>
        </Example>
    </ItemGroup>

    <Target Name="RunMyTask">
        <MyTask
            Sources = "@(Example)"
            Output = "%(Color)\MyFile.txt"/>
    </Target>

</Project>

如需更多特定批次處理的範例,請參閱 HOW TO:使用項目中繼資料批次處理工作

目標批次處理

MSBuild 會在執行目標之前,先檢查目標的輸入和輸出是否為最新的。如果輸入和輸出都是最新的,便會略過該目標。如果目標內的工作使用批次處理,則 MSBuild 須判斷各批次項目的輸入和輸出是否為最新的。否則,每次點擊時都會執行目標。

下列範例說明 Target 項目,其中包含使用 %(ItemMetaDataName) 標記法的 Outputs 屬性。MSBuild 會依據 Color 項目中繼資料將 Example 項目集合分割成批次,並分析各批次輸出檔案的時間戳記 (Timestamp)。如果某個批次的輸出不是最新的,則會執行該目標。否則會略過目標。

<Project
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    
    <ItemGroup>
        <Example Include="Item1">
            <Color>Blue</Color>
        </Example>
        <Example Include="Item2">
            <Color>Red</Color>
        </Example>
    </ItemGroup>

    <Target Name="RunMyTask"
        Inputs="@(Example)"
        Outputs="%(Color)\MyFile.txt">
        <MyTask
            Sources = "@(Example)"
            Output = "%(Color)\MyFile.txt"/>
    </Target>

</Project>

如需其他目標批次處理的範例,請參閱 HOW TO:使用項目中繼資料批次處理目標

請參閱

概念

MSBuild 進階概念

參考

ItemMetadata 項目 (MSBuild)

其他資源

MSBuild 概念

MSBuild 參考