共用方式為


目標批次處理中的項目中繼資料

MSBuild 能夠對建置目標 (Target) 的輸入和輸出執行相依性分析。如果判斷目標的輸入或輸出是最新的,會略過目標,建置則繼續進行。Target 項目 (Element) 會使用 InputsOutputs 屬性,指定相依性分析期間所要檢查的項目 (Item)。

如果目標包含使用批次項目做為輸入或輸出的工作,則目標的 Target 項目應在其 InputsOutputs 屬性中使用批次處理,以便讓 MSBuild 略過已是最新狀態的項目批次。

批次處理目標

在下列程式碼中,包含了一個名為 Res 的項目清單,它會依據 Culture 項目的中繼資料分割成兩個批次。這些批次中的每個批次都會傳遞至 AL 工作,再由該工作為每個批次建立輸出組件。藉由在 Target 項目的 Outputs 屬性上使用批次處理,MSBuild 就能在執行目標之前,判斷各批次是否為最新狀態。若未使用目標批次處理,則每次執行目標時,工作都會執行兩個項目批次。

<Project
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003">

    <ItemGroup>
        <Res Include="Strings.fr.resources">
            <Culture>fr</Culture>
        </Res>
        <Res Include="Strings.jp.resources">
            <Culture>jp</Culture>
        </Res>
        <Res Include="Menus.fr.resources">
            <Culture>fr</Culture>
        </Res>
        <Res Include="Dialogs.fr.resources">
            <Culture>fr</Culture>
        </Res>
        <Res Include="Dialogs.jp.resources">
            <Culture>jp</Culture>
        </Res>
        <Res Include="Menus.jp.resources">
            <Culture>jp</Culture>
        </Res>
    </ItemGroup>

    <Target Name="Build"
        Inputs="@(Res)"
        Outputs="%(Culture)\MyApp.resources.dll">
        
        <AL Resources="@(Res)"
            TargetType="library"
            OutputAssembly="%(Culture)\MyApp.resources.dll"

    </Target>

</Project>

請參閱

工作

HOW TO:累加建置

參考

Target 項目 (MSBuild)

概念

MSBuild 批次處理

工作批次處理中的項目中繼資料