共用方式為


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

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 批次處理

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