Praca z metadanymi elementu w docelowym przetwarzaniu wsadowym

Program MSBuild ma możliwość przeprowadzania analizy zależności na danych wejściowych i wyjściowych obiektu docelowego kompilacji. Jeśli okaże się, że dane wejściowe lub wyjściowe obiektu docelowego są aktualne, obiekt docelowy zostanie pominięty, a kompilacja będzie kontynuowana. Target elementy używają Inputs atrybutów i Outputs , aby określić elementy do sprawdzenia podczas analizy zależności.

Jeśli element docelowy zawiera zadanie, które używa elementów wsadowych jako danych wejściowych lub wyjściowych, element obiektu docelowego powinien używać przetwarzania wsadowego w jego Inputs elemecie lub Outputs atrybutów, Target aby umożliwić programowi MSBuild pomijanie partii elementów, które są już aktualne.

Miejsca docelowe wsadowe

Poniższy przykład zawiera listę elementów o nazwie Res , która jest podzielona na dwie partie na Culture podstawie metadanych elementu. Każda z tych partii jest przekazywana do AL zadania, które tworzy zestaw wyjściowy dla każdej partii. Przy użyciu dzielenia na partie atrybutu OutputsTarget elementu program MSBuild może określić, czy każda z poszczególnych partii jest aktualna przed uruchomieniem elementu docelowego. Bez użycia przetwarzania wsadowego obiektów docelowych obie partie elementów będą uruchamiane przez zadanie za każdym razem, gdy obiekt docelowy został wykonany.

<Project
    xmlns="http://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">
        </AL>

    </Target>

</Project>