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)