Share via


MSBuild-Batchverarbeitung

Aktualisiert: November 2007

Mit MSBuild können Sie Elementauflistungen auf der Grundlage von Elementmetadaten in verschiedene Kategorien, so genannte Batches, unterteilen und eine Aufgabe einmal mit jedem Batch ausführen.

Batchverarbeitung von Aufgaben

Durch die Batchverarbeitung von Aufgaben lassen sich Projektdateien einfacher gestalten. So können Elementauflistungen in verschiedene Batches unterteilt und die einzelnen Batches separat an eine Aufgabe übergeben werden. Für eine Projektdatei muss die Aufgabe mit den zugehörigen Attributen also nur einmal deklariert werden, obwohl sie mehrere Male ausgeführt werden kann.

Sie können in MSBuild angeben, dass eine Aufgabe im Batchmodus verarbeitet werden soll. Dazu verwenden Sie die %(ItemMetaDataName)-Notation in einem der Aufgabenattribute. Im folgenden Beispiel wird die Example-Elementauflistung auf der Grundlage der Color-Elementmetadaten in Batches unterteilt, die einzeln an die MyTask-Aufgabe übergeben werden.

Hinweis:

Falls in den Aufgabenattributen kein weiteres Mal auf die Elementauflistung verwiesen wird oder der Metadatenname mehrdeutig ist, können Sie die %(ItemCollection.ItemMetaDataName)-Notation verwenden, um den für die Batchverarbeitung zu verwendenden Elementmetadaten-Wert vollständig zu qualifizieren.

<Project
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    
    <ItemGroup>
        <Example Include="Item1">
            <Color>Blue</Color>
        </Example>
        <Example Include="Item2">
            <Color>Red</Color>
        </Example>
    </ItemGroup>

    <Target Name="RunMyTask">
        <MyTask
            Sources = "@(Example)"
            Output = "%(Color)\MyFile.txt"/>
    </Target>

</Project>

Spezifischere Beispiele für die Batchverarbeitung finden Sie unter Gewusst wie: Batchverarbeitung von Aufgaben mithilfe von Elementmetadaten.

Batchverarbeitung von Zielen

Vor dem Ausführen des Ziels überprüft MSBuild, ob die Eingaben und Ausgaben eines Ziels aktuell sind. Wenn sowohl Eingaben als auch Ausgaben aktuell sind, wird das Ziel übersprungen. Wenn eine Aufgabe innerhalb eines Ziels im Batchmodus verarbeitet wird, muss MSBuild ermitteln, ob die Eingaben und Ausgaben der einzelnen Elementbatches aktuell sind. Andernfalls wird das Ziel jedes Mal ausgeführt, sobald es erreicht wird.

Anhand des folgenden Beispiels wird ein Target-Element veranschaulicht, das ein Outputs-Attribut mit der %(ItemMetaDataName)-Notation enthält. MSBuild unterteilt die Example-Elementauflistung auf der Grundlage der Color-Elementmetadaten in Batches und analysiert die Timestamps der Ausgabedateien pro Batch. Wenn die Ausgaben eines Batches nicht aktuell sind, wird das Ziel ausgeführt. Andernfalls wird das Ziel übersprungen.

<Project
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    
    <ItemGroup>
        <Example Include="Item1">
            <Color>Blue</Color>
        </Example>
        <Example Include="Item2">
            <Color>Red</Color>
        </Example>
    </ItemGroup>

    <Target Name="RunMyTask"
        Inputs="@(Example)"
        Outputs="%(Color)\MyFile.txt">
        <MyTask
            Sources = "@(Example)"
            Output = "%(Color)\MyFile.txt"/>
    </Target>

</Project>

Ein anderes Beispiel für die Batchverarbeitung von Zielen finden Sie unter Gewusst wie: Batchverarbeitung von Zielen mithilfe von Elementmetadaten.

Siehe auch

Konzepte

Weiterführende MSBuild-Konzepte

Referenz

ItemMetadata-Element (MSBuild)

Weitere Ressourcen

MSBuild-Grundlagen

MSBuild-Referenz