MSBuild-Aufgaben

Aktualisiert: November 2007

Eine Buildplattform muss in der Lage sein, während des Buildvorgangs eine beliebige Anzahl von Aktionen auszuführen. MSBuild verwendet Aufgaben, um diese Aktionen auszuführen. Eine Aufgabe ist eine Einheit von ausführbarem Code, der von MSBuild zum Ausführen unteilbarer Buildvorgänge verwendet wird.

Aufgabenlogik

Das XML-Projektdateiformat von MSBuild ist nicht in der Lage, Buildvorgänge eigenständig auszuführen, sodass außerhalb der Projektdatei eine Aufgabenlogik implementiert werden muss.

Die Ausführungslogik einer Aufgabe wird als .NET-Klasse implementiert, durch die die im Microsoft.Build.Framework-Namespace definierte ITask-Schnittstelle implementiert wird.

Durch die Aufgabenklasse werden auch die Eingabe- und Ausgabeparameter definiert, die in der Projektdatei für die Aufgabe verfügbar sind. Auf alle konfigurierbaren öffentlichen nicht statischen und nicht abstrakten Eigenschaften, die von der Aufgabenklasse verfügbar gemacht werden, kann über die Projektdatei zugegriffen werden, indem ein entsprechendes gleichnamiges Attribut in das Task-Element eingefügt wird.

Sie können eine eigene Aufgabe schreiben, indem Sie eine verwaltete Klasse erstellen, durch die die ITask-Schnittstelle implementiert wird. Weitere Informationen finden Sie unter Gewusst wie: Schreiben von Aufgaben.

Ausführen einer Aufgabe aus einer Projektdatei

Vor dem Ausführen einer Aufgabe in der Projektdatei müssen Sie dem Aufgabennamen mit dem UsingTask-Element zuerst den Typ in der Assembly zuweisen, durch die die Aufgabe implementiert wird. Wenn die Aufgabe in der Projektdatei gefunden wird, kann MSBuild anhand des Typs erkennen, wo sich die Ausführungslogik der Aufgabe befindet.

Um eine Aufgabe in einer MSBuild-Projektdatei auszuführen, erstellen Sie ein Element mit dem Namen der Aufgabe als unterordnetes Element eines Target-Elements. Wenn eine Aufgabe Parameter akzeptiert, werden diese als Attribute des Elements übergeben.

MSBuild-Elementauflistungen und -Eigenschaften können als Parameter verwendet werden. Durch den folgenden Code wird beispielsweise die MakeDir-Aufgabe aufgerufen und der Wert der Directories-Eigenschaft des MakeDir-Objekts auf den Wert der im vorherigen Beispiel deklarierten BuildDir-Eigenschaft festgelegt.

<Target Name="MakeBuildDirectory">
    <MakeDir
        Directories="$(BuildDir)" />
</Target>

Aufgaben können auch Informationen an die Projektdatei zurückgeben, die zur späteren Verwendung in Elementen oder Eigenschaften gespeichert werden können. Durch den folgenden Code wird beispielsweise die Copy-Aufgabe aufgerufen, und die Informationen aus der CopiedFiles-Ausgabeeigenschaft werden in der SuccessfullyCopiedFiles-Elementauflistung gespeichert.

<Target Name="CopyFiles">
    <Copy
        SourceFiles="@(MySourceFiles)"
        DestinationFolder="@(MyDestFolder)">
        <Output
            TaskParameter="CopiedFiles"
            ItemName="SuccessfullyCopiedFiles"/>
     </Copy>
</Target>

Bereits enthaltene Aufgaben

MSBuild wird mit zahlreichen Aufgaben, wie Copy zum Kopieren von Dateien, MakeDir zum Erstellen von Verzeichnissen und Csc zum Kompilieren von Visual C#-Quellcodedateien, bereitgestellt. Eine vollständige Liste der verfügbaren Aufgaben sowie Nutzungsinformationen finden Sie unter Referenz zu MSBuild-Aufgaben.

Siehe auch

Aufgaben

Gewusst wie: Schreiben von Aufgaben

Konzepte

Übersicht über MSBuild

Weitere Ressourcen

MSBuild-Grundlagen