Freigeben über


Gewusst wie: Batchverarbeitung von Zielen mithilfe von Elementmetadaten

Aktualisiert: November 2007

MSBuild ist in der Lage, Abhängigkeitsanalysen für die Eingaben und Ausgaben eines Buildziels auszuführen. Sobald festgestellt wird, dass die Eingaben bzw. Ausgaben des Ziels aktuell sind, wird das Ziel übersprungen und der Buildvorgang fortgesetzt. Target-Elemente verwenden das Inputs-Attribut und das Outputs-Attribut, um die Elemente für die Abhängigkeitsanalyse anzugeben.

Wenn ein Ziel eine Aufgabe enthält, die Elemente im Batchmodus als Eingaben oder Ausgaben verwendet, sollte das Target-Element des Ziels die Batchverarbeitung in seinem Inputs-Attribut oder Outputs-Attribut verwenden, damit Batches mit Elementen, die bereits auf dem neuesten Stand sind, von MSBuild übersprungen werden können.

Batchverarbeitung von Zielen

Das folgende Beispiel enthält eine Elementauflistung mit dem Namen Res, die auf der Grundlage der Culture-Elementmetadaten in zwei Batches unterteilt ist. Jeder dieser Batches wird an die AL-Aufgabe übergeben, die eine Ausgabeassembly für jeden Batch erstellt. Wenn das Outputs-Attribut des Target-Elements im Batchmodus verarbeitet wird, kann MSBuild vor dem Ausführen des Ziels für jeden einzelnen Batch feststellen, ob er aktuell ist. Wenn keine Batchverarbeitung für Ziele verwendet wird, würde die Aufgabe bei jedem Ausführen des Ziels beide Elementbatches ausführen.

<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>

Siehe auch

Aufgaben

Gewusst wie: Inkrementelles Erstellen

Gewusst wie: Batchverarbeitung von Aufgaben mithilfe von Elementmetadaten

Konzepte

MSBuild-Batchverarbeitung

Referenz

Target-Element (MSBuild)