MSBuild
Microsoft Build Engine (MSBuild) ist eine Plattform zum Erstellen von Anwendungen. MSBuild stellt ein XML-Schema für eine Projektdatei bereit, die steuert, wie die Buildplattform Software verarbeitet und erstellt. Zwar ist MSBuild in Visual Studio integriert, davon jedoch nicht abhängig. Entwickler können Produkte in Umgebungen orchestrieren und erstellen, in denen Visual Studio nicht installiert wurde.
Dieses Thema enthält eine Übersicht über MSBuild:
Grundelemente einer MSBuild-Projektdatei
Projekterstellung in MSBuild
Erweiterte Features von MSBuild
Projekterstellung mit Visual Studio unter Verwendung von MSBuild
Ein einführendes Lernprogramm finden Sie unter Exemplarische Vorgehensweise: Verwenden von MSBuild.
Projektdatei
In MSBuild wird ein einfaches und erweiterbares, XML-basiertes Projektdateiformat verwendet. Im Projektdateiformat von MSBuild können Entwickler die zu erstellenden Elemente sowie deren Build für andere Betriebssysteme und Konfigurationen beschreiben. Zusätzlich können Entwickler im Projektdateiformat wiederverwendbare Buildregeln erstellen, die in separate Dateien unterteilt werden können, um Builds im Produkt über verschiedene Projekte hinweg konsistent auszuführen.
In den folgenden Abschnitten werden einige der Grundelemente des MSBuild-Projektdateiformats beschrieben. Ein Lernprogramm zum Erstellen einer Projektbasisdatei finden Sie unter Exemplarische Vorgehensweise: Erstellen einer neuen MSBuild-Projektdatei.
Eigenschaften
Eigenschaften stellen Schlüssel/Wert-Paare dar, die zur Konfiguration von Builds verwendet werden können. Eigenschaften werden deklariert, indem ein Element mit dem Namen der Eigenschaft als untergeordnetes Element eines PropertyGroup-Elements erstellt wird. Mit dem folgenden Code wird beispielsweise die Eigenschaft BuildDir mit dem Wert Build erstellt.
<PropertyGroup>
<BuildDir>Build</BuildDir>
</PropertyGroup>
Auf Eigenschaften wird in der gesamten Projektdatei mit der Syntax %(PropertyName) verwiesen. Beispielsweise wird auf die Eigenschaft im Beispiel mit $(BuildDir) verwiesen. Weitere Informationen zu Eigenschaften finden Sie unter MSBuild-Eigenschaften.
Elemente
Elemente sind Eingaben in das Buildsystem und stellen Dateien in der Regel dar. Elemente werden auf der Grundlage benutzerdefinierter Elementnamen in Elementtypen gruppiert. Diese Elementtypen können als Parameter für Aufgaben verwendet werden, die mithilfe der einzelnen Elemente die Schritte des Buildprozesses ausführen.
Elemente werden in der Projektdatei deklariert, indem ein Element mit dem Namen des Elementtyps als untergeordnetes Element eines ItemGroup-Elements erstellt wird. Im folgenden Code wird z. B. der Elementtyp Compile mit zwei Dateien erstellt.
<ItemGroup>
<Compile Include = "file1.cs"/>
<Compile Include = "file2.cs"/>
</ItemGroup>
Auf Elementtypen wird in der gesamten Projektdatei mit der Syntax @(ItemType) verwiesen. Auf den Elementtyp im Beispiel wird beispielsweise mit @(Compile) verwiesen.
Elemente können mit Platzhalterzeichen deklariert werden und zusätzliche Metadaten für erweiterte Buildszenarios enthalten. Weitere Informationen zu Elementen finden Sie unter MSBuild-Elemente.
Aufgaben
Aufgaben sind 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. Aufgaben können wiederverwendet werden, auch von verschiedenen Entwicklern in unterschiedlichen Projekten.
Die Ausführungslogik einer Aufgabe wird in verwaltetem Code geschrieben und MSBuild über das UsingTask-Element zugeordnet. Sie können eine eigene Aufgabe schreiben, indem Sie einen verwalteten Typ erstellen, der die ITask-Schnittstelle implementiert. Weitere Informationen zum Erstellen von Aufgaben finden Sie unter Schreiben von Aufgaben.
MSBuild umfasst häufige Aufgaben, die Sie an Ihre - Anforderungen anpassen können, z. B. Copy, mit der Dateien kopiert werden, MakeDir, mit der Verzeichnisse erstellt werden, und Csc, mit der Visual C#-Quellcodedateien kompiliert werden. Eine vollständige Liste der verfügbaren Aufgaben sowie zugehörige Verwendungsinformationen finden Sie unter Referenz zu MSBuild-Aufgaben.
Eine Aufgaben wird in einer MSBuild-Projektdatei ausgeführt, indem Sie ein Element mit dem Namen der Aufgabe als untergeordnetes Element eines Target-Elements erstellen. Die meisten Aufgaben akzeptieren Parameter, die als Attribute des Elements übergeben werden. Als Parameter können Eigenschaften und Elemente von MSBuild verwendet werden. Im 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 Lesbarkeit zu erhöhen und Erweiterungen zu ermöglichen. Wenn die Buildschritte in Ziele unterteilt werden, können Sie einen Teil des Buildprozesses in anderen Zielen aufrufen, ohne diesen Codeabschnitt in jedes Ziel kopieren zu müssen. 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 anschließend über jeden Einstiegspunkt ausführen, für den es erforderlich ist.
Ziele werden in der Projektdatei mit dem Target-Element deklariert. Im folgenden Code wird beispielsweise das Ziel Compile erstellt, durch das anschließend die Csc-Aufgabe mit der im vorangehenden Beispiel deklarierten Elementliste aufgerufen wird.
<Target Name="Compile">
<Csc Sources="@(Compile)" />
</Target>
In fortgeschritteneren Szenarios können Ziele die zwischen verschiedenen Zielen bestehenden Beziehungen beschreiben und Abhängigkeitsanalysen durchführen. Wenn das jeweilige Ziel aktuell ist, können daher ganze Bereiche des Buildprozesses übersprungen werden. Weitere Informationen zu Zielen finden Sie unter MSBuild-Ziele.
Bedingte Elemente
Viele MSBuild-Elemente werden bedingt definiert, das heißt, im Element wird das Condition-Attribut angegeben. Sofern wenn die Bedingung nicht "true" ergibt, wird der Inhalt bedingter Elemente ignoriert. Beispiel:
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
bedeutet: "Wenn die Configuration-Eigenschaft noch nicht definiert wurde, definieren Sie diese, und weisen Sie ihr den Wert Debug zu."
Fast alle MSBuild-Elemente können ein Condition-Attribut besitzen. Weitere Informationen finden Sie unter MSBuild-Bedingungen.
Berücksichtigung der Groß-/Kleinschreibung
Das XML-Schema von MSBuild folgt den Regeln für XML. Bei Elementen und Attributnamen muss die Groß-/Kleinschreibung beachtet werden. Bei Namen von Eigenschaften, Elementen und Metadaten wird die Groß-/Kleinschreibung im MSBuild-Objektmodell jedoch nicht beachtet. Betrachten Sie hierzu die folgende Elementgruppe:
<ItemGroup>
<Compile Include="one.cs" />
<comPile Include="two.cs" />
</ItemGroup>
Damit wird der Compile-Elementtyp oder der comPile-Elementtyp oder eine beliebige andere Fallvariante erstellt und der Wert "one.cs;two.cs" zugewiesen.
Verwenden von MSBuild an einer Eingabeaufforderung
Zum Ausführen von MSBuild in der Befehlszeile übergeben Sie eine Projektdatei mit den entsprechenden Befehlszeilenoptionen an MSBuild.exe. Über Befehlszeilenoptionen können Sie Eigenschaften festlegen, bestimmte Ziele ausführen und weitere Optionen für die Steuerung des Buildprozesses festlegen. Beispielsweise verwenden Sie die folgende Befehlszeilensyntax zum Erstellen der Datei MyProj.proj, deren Configuration-Eigenschaft auf Debug festgelegt ist.
MSBuild.exe MyProj.proj /property:Configuration=Debug
Weitere Informationen zu Befehlszeilenoptionen in MSBuild finden Sie unter MSBuild-Befehlszeilenreferenz.
Sicherheitshinweis |
---|
Bevor Sie ein Projekt herunterladen, bestimmen Sie die Vertrauenswürdigkeit des Codes. |
Erweiterte Konzepte
MSBuild kann auch für andere Vorgänge verwendet werden, beispielsweise zum Protokollieren von Fehlern, Warnungen und Nachrichten für die Konsole oder andere Ausgabegeräte, zum Ausführen von Abhängigkeitsanalysen für Ziele sowie zum stapelweisen Ausführen von Aufgaben und Zielen für Elementmetadaten. Weitere Informationen zu diesen erweiterten Konzepten finden Sie unter Weiterführende MSBuild-Konzepte.
Verwenden von MSBuild in Visual Studio
Visual Studio verwendet das MSBuild-Projektdateiformat, um Buildinformationen zu verwalteten Projekten zu speichern. Projekteinstellungen, die mit der Visual Studio-Schnittstelle hinzugefügt oder geändert werden, werden in der *PROJ-Datei gespeichert, die für jedes Projekt generiert wird. Visual Studio erstellt verwaltete Projekte mithilfe einer gehosteten Instanz von MSBuild. Dies bedeutet, dass ein verwaltetes Projekt mit identischem Ergebnis in Visual Studio oder aber an einer Eingabeaufforderung erstellt werden kann (auch wenn Visual Studio nicht installiert ist).
Ein Lernprogramm zum Verwenden von MSBuild in Visual Studio finden Sie unter Exemplarische Vorgehensweise: Verwenden von MSBuild.
Festlegung von Zielversionen
Mit Visual Studio können Sie eine Anwendung zur Ausführung in verschiedenen Versionen von .NET Framework kompilieren. Beispielsweise können Sie die gleiche Anwendung für die Ausführung in .NET Framework, Version 2.0, und für die Ausführung in .NET Framework, Version 4, kompilieren. Die Möglichkeit, für mehr als ein Framework zu kompilieren, wird Festlegung von Zielversionen genannt.
In Folgenden sind einige Vorteile der Festlegung auf mehrere Zielversionen aufgeführt:
Sie können Anwendungen entwickeln, die auf frühere Versionen von .NET Framework abzielen, z. B. Version 2.0, 3.0 oder 3.5.
Sie können neben .NET Framework auch auf andere Frameworks abzielen, z. B. das Silverlight Framework.
Sie können auf ein Frameworkprofil abzielen, das eine vordefinierte Teilmenge eines Zielframeworks ist.
Sie können ebenfalls auf neu veröffentlichte Service Packs für .NET Framework, Version 4, abzielen.
Durch die Festlegung von Zielversionen wird garantiert, dass von einer Anwendung nur die im Zielframework verfügbaren Funktionen verwendet werden.
Weitere Informationen finden Sie unter Festlegung von Zielversionen mit MSBuild.
Verwandte Themen
Titel |
Beschreibung |
---|---|
Exemplarische Vorgehensweise: Erstellen einer neuen MSBuild-Projektdatei |
Hier wird veranschaulicht, wie eine Projektbasisdatei nur mit einem Texteditor inkrementell erstellt wird. |
Die Bausteine von MSBuild werden eingeführt, und es wird gezeigt, wie MSBuild-Projekte erstellt, bearbeitet und gedebuggt werden, ohne die integrierte Entwicklungsumgebung von Visual Studio (IDE) zu schließen. |
|
Stellt die vier Bausteine von MSBuild dar: Eigenschaften, Elemente, Ziele und Aufgaben. |
|
Hierin werden die allgemeinen Konzepte hinter dem MSBuild-Dateiformat sowie das Zusammenwirken der einzelnen Teile beschrieben. |
|
Hierin werden Eigenschaften und Eigenschaftenauflistungen eingeführt. Eigenschaften sind Schlüssel/Wert-Paare, die zur Konfiguration von Builds verwendet werden können. |
|
Es wird erläutert, wie Aufgaben in einer bestimmten Reihenfolge gruppiert werden und wie Sie es ermöglichen, dass Abschnitte des Buildprozesses über die Befehlszeile aufgerufen werden. |
|
Hierin wird gezeigt, wie eine Einheit von ausführbarem Code erstellt wird, die von MSBuild zum Ausführen unteilbarer Buildvorgänge verwendet werden kann. |
|
Hier wird erläutert, wie das Condition-Attribut in einem MSBuild-Element verwendet wird. |
|
Hier werden die Batchverarbeitung, das Ausführen von Transformationen, Überwachen (Protokollieren) des Builds sowie andere erweiterte Verfahren veranschaulicht. |
|
Hierin werden Community- und Unterstützungsressourcen für weitere Informationen zu MSBuild aufgeführt. |
Verweise
MSBuild-Referenz
Links zu Themen mit Referenzinformationen.MSBuild-Glossar
Hier werden allgemeine Begriffe zu MSBuild definiert.