Share via


Übersicht über MSBuild

Aktualisiert: November 2007

Microsoft Build Engine (MSBuild) ist die neue Buildplattform für Microsoft und Visual Studio. MSBuild führt die Verarbeitungs- und Buildprozesse vollständig transparent aus. Softwareentwickler können Produkte folglich in Build Lab-Umgebungen programmieren und erstellen, in denen Visual Studio nicht installiert ist. Dieses Thema enthält eine kurze Übersicht über:

  • Grundelemente einer MSBuild-Projektdatei

  • Projekterstellung mit MSBuild

  • Erweiterte Features von MSBuild

  • Projekterstellung mit Visual Studio unter Verwendung von MSBuild

Projektdatei

Mit MSBuild wird ein neues XML-basiertes Projektdateiformat eingeführt, das einerseits leicht verständlich und erweiterbar ist und andererseits von Microsoft vollständig unterstützt wird. Mit dem MSBuild-Projektdateiformat können Entwickler detailliert beschreiben, welche Elemente erstellt werden müssen und wie der Buildvorgang unter verschiedenen Plattformen und Konfigurationen auszuführen ist. Zusätzlich können Entwickler mit dem Projektdateiformat wiederverwendbare Buildregeln erstellen, die in separate Dateien unterteilt werden können, um Builds innerhalb eines Produkts über verschiedene Projekte hinweg konsistent auszuführen. In den folgenden Abschnitten werden einige der Grundelemente des MSBuild Projektdateiformats beschrieben.

Elemente

Elemente stellen Eingaben für das Buildsystem dar und werden auf Grundlage ihrer benutzerdefinierten Auflistungsnamen in Elementauflistungen gruppiert. Diese Elementauflistungen können als Parameter für Aufgaben verwendet werden, die die in der Auflistung enthaltenen Elemente verwenden, um die einzelnen Stufen des Buildprozesses auszuführen.

Elemente werden in der Projektdatei deklariert, indem ein Element mit dem Namen der Elementauflistung als untergeordnetes Element eines ItemGroup-Elements erstellt wird. Im folgenden Code wird z. B. eine Elementauflistung mit dem Namen Compile erstellt, die zwei Dateien einschließt.

<ItemGroup>
    <Compile Include = "file1.cs"/>
    <Compile Include = "file2.cs"/>
</ItemGroup>

In der gesamten Projektdatei wird mit der Syntax @(ItemCollectionName) auf Elementauflistungen verwiesen. Im vorangehenden Beispiel verweisen Sie beispielsweise mit @(Compile) auf die Elementauflistung.

Elemente können mit Platzhaltern deklariert werden und zusätzliche Metadaten für fortgeschrittene Buildszenarien enthalten. Weitere Informationen zu Elementen finden Sie unter MSBuild-Elemente.

Eigenschaften

Eigenschaften stellen Schlüssel/Wert-Paare dar, die zur Konfiguration von Builds verwendet werden können. Elemente und Eigenschaften unterscheiden sich folgendermaßen:

  • Elemente werden in Auflistungen gespeichert, während Eigenschaften einen einzelnen Skalarwert enthalten.

  • Elemente können in Elementauflistungen nicht entfernt werden, während die Werte von Eigenschaften nach dem Definieren geändert werden können.

  • Elemente können Metadaten enthalten und die %(ItemMetadata)-Notation verwenden. Dies trifft für Eigenschaften jedoch nicht zu.

Eigenschaften werden deklariert, indem ein Element mit dem Namen der Eigenschaft als untergeordnetes Element eines PropertyGroup-Elements erstellt wird. Durch den folgenden Code wird beispielsweise eine Eigenschaft mit dem Namen BuildDir erstellt, die den Wert Build aufweist.

<PropertyGroup>
    <BuildDir>Build</BuildDir>
</PropertyGroup>

In der gesamten Projektdatei wird mit der Syntax $(PropertyName) auf Eigenschaften verwiesen. Auf die Eigenschaft im vorherigen Beispiel wird beispielsweise mit $(BuildDir) verwiesen. Weitere Informationen zu Eigenschaften finden Sie unter MSBuild-Eigenschaften.

Aufgaben

Aufgaben sind wieder verwendbare Einheiten ausführbaren Codes, die in MSBuild-Projekten zum Ausführen von Buildvorgängen verwendet werden. Eine Aufgabe kann beispielsweise Eingabedateien kompilieren oder ein externes Tool ausführen. Nach der Erstellung können Aufgaben freigegeben und von verschiedenen Entwicklern in unterschiedlichen Projekten wiederverwendet werden.

Die Ausführungslogik einer Aufgabe wird in verwaltetem Code geschrieben und MSBuild mit dem UsingTask-Element zugeordnet. Sie können eine eigene Aufgabe schreiben, indem Sie einen verwalteten Typ erstellen, der die ITask-Schnittstelle implementiert. Weitere Informationen zum Schreiben von Aufgaben finden Sie unter Gewusst wie: Schreiben von Aufgaben.

MSBuild wird mit zahlreichen gängigen 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.

Aufgaben in einer MSBuild-Projektdatei werden ausgeführt, indem Sie ein Element mit dem Namen der Aufgabe als untergeordnetes Element eines Target-Elements erstellen. Aufgaben nehmen in der Regel Parameter auf, die als Attribute des Elements übergeben werden. MSBuild-Elementauflistungen und -Eigenschaften können als Parameter verwendet werden. Durch den folgenden Code wird beispielsweise die MakeDir-Aufgabe aufgerufen und der im vorangehenden Beispiel deklarierte Wert der BuildDir-Eigenschaft an sie übergeben.

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

Weitere Informationen zu Aufgaben finden Sie unter MSBuild-Aufgaben.

Ziele

Durch Ziele werden Aufgaben in einer bestimmten Reihenfolge gruppiert und Abschnitte der Projektdatei als Einstiegspunkte in den Buildprozess verfügbar gemacht. Ziele werden oft in logischen Abschnitten gruppiert, um ihre Erweiterung zu ermöglichen und die Lesbarkeit zu erhöhen. Wenn die Buildschritte in viele Ziele unterteilt werden, können Sie einen Teilbereich des Buildprozesses von anderen Zielen aufrufen, ohne diesen Codeabschnitt in jedes Ziel zu kopieren. Wenn mehrere Einstiegspunkte in den Buildprozess die Erstellung von Verweisen erfordern, können Sie beispielsweise ein Ziel erstellen, durch das Verweise erstellt werden, und dieses Ziel von jedem erforderlichen Einstiegspunkt ausführen.

Ziele werden in der Projektdatei mit dem Target-Element deklariert. Durch den folgenden Code wird beispielsweise ein Ziel mit dem Namen Compile erstellt, durch das anschließend die Csc-Aufgabe mit der im vorangehenden Beispiel deklarierten Elementauflistung aufgerufen wird.

<Target Name="Compile">
    <Csc Sources="@(Compile)" />
</Target>

In fortgeschritteneren Szenarien können Ziele die zwischen verschiedenen Zielen bestehenden Beziehungen beschreiben und Abhängigkeitsanalysen durchführen. Wenn das jeweilige Ziel aktuell ist, können ganze Bereiche des Buildprozesses übersprungen werden. Weitere Informationen zu Zielen finden Sie unter MSBuild-Ziele.

Erstellen mit MSBuild

Sie führen MSBuild in der Befehlszeile aus, indem Sie eine Projektdatei mit den entsprechenden Befehlszeilenoptionen an MSBuild.exe übergeben. Befehlszeilenoptionen ermöglichen es Ihnen, Eigenschaften festzulegen, bestimmte Ziele auszuschließen und Protokollierungen anzugeben. Beispielsweise würden Sie die folgende Befehlszeilensyntax zur Erstellung der Datei MyProj.proj verwenden, deren Configuration-Eigenschaft auf Debug festgelegt ist.

MSBuild.exe MyProj.proj /property:Configuration=Debug

Weitere Informationen zu MSBuild-Befehlszeilenoptionen finden Sie unter MSBuild-Befehlszeilenreferenz.

Sicherheitshinweis:

Vor dem Erstellen eines heruntergeladenen Projekts sollten Sie die Vertrauenswürdigkeit des Codes überprüfen. MSBuild-Projektdateien können u. U. Aufgaben ausführen, durch die das System beschädigt wird.

Erweiterte Konzepte

MSBuild kann während des Buildvorgangs für fortgeschrittene Operationen verwendet werden. Dazu gehört das Protokollieren von Fehlern, Warnungen und Nachrichten für die Konsole oder andere Protokollierungsroutinen, das Ausführen von Abhängigkeitsanalysen für Ziele sowie das stapelweise Ausführen von Aufgaben und Zielen für Elementmetadaten. Weitere Informationen zu diesen erweiterten Konzepten finden Sie unter Weiterführende MSBuild-Konzepte.

Integration von Visual Studio

Visual Studio verwendet das MSBuild-Projektdateiformat, um Buildinformationen zu verwalteten Projekten zu speichern. Die über Visual Studio hinzugefügten und geänderten Projekteinstellungen sind in der .*proj-Datei angegeben, die für jedes Projekt generiert wird. In Visual Studio werden über eine gehostete Instanz von MSBuild verwaltete Projekte erstellt. Dies bedeutet, dass ein verwaltetes Projekt in Visual Studio und über die Befehlszeile (selbst wenn Visual Studio nicht installiert ist) gleichermaßen erstellt werden kann und zu identischen Ergebnissen führt. Weitere Informationen zur Verwendung von Visual Studio und MSBuild finden Sie unter Weiterführende MSBuild-Konzepte.

Siehe auch

Konzepte

MSBuild

MSBuild-Ziele

MSBuild-Aufgaben

MSBuild-Elemente

MSBuild-Eigenschaften

MSBuild-Batchverarbeitung

Übersicht über die Protokollierung in MSBuild

MSBuild-Transformationen

Integration von Visual Studio (MSBuild)

Referenz zum MSBuild-Projektdateischema

Weitere Ressourcen

MSBuild-Referenz

Referenz zu MSBuild-Aufgaben