Freigeben über


Elementmetadaten bei der Batchverarbeitung von Zielen

MSBuild ist in der Lage, Abhängigkeitsanalysen für die Eingaben und Ausgaben eines Buildziels auszuführen. Wenn feststeht, dass die Eingaben oder die Ausgaben des Ziels aktuell sind, wird das Ziel übersprungen, und der Build wird fortgesetzt. Target-Elemente geben die Elemente, die während der Abhängigkeitsanalyse überprüft werden sollen, mit dem Inputs-Attribut und dem Outputs-Attribut an.

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

Referenz

Target-Element (MSBuild)

Konzepte

MSBuild-Batchverarbeitung

Elementmetadaten bei der Batchverarbeitung von Aufgaben