MSBuild

Das Microsoft Build Engine ist eine Plattform zum Erstellen von Anwendungen. Dieses Modul, das auch MSBuild genannt wird, stellt ein XML-Schema für eine Projektdatei bereit. Diese steuert, wie die Buildplattform Software verarbeitet und erstellt. Visual Studio verwendet MSBuild, es ist jedoch nicht von Visual Studio abhängig. Durch das Aufrufen von "msbuild.exe" für Ihre Projekt- oder Projektmappendatei können Sie Produkte in Umgebungen orchestrieren und erstellen, in denen Visual Studio nicht installiert ist.

Visual Studio verwendet MSBuild, um verwaltete Projekte zu laden und zu erstellen. Die Projektdateien in Visual Studio (CSPROJ-, VBPROJ-, VCXPROJ-Dateien und andere) enthalten MSBuild-XML-Code, der ausgeführt wird, wenn Sie ein Projekt mithilfe der IDE erstellen. Alle erforderlichen Einstellungen und Buildprozesse werden für die reguläre Entwicklungsarbeit in Visual Studio-Projekte importiert. Sie können diese jedoch in Visual Studio oder mithilfe eine XML-Editors erweitern oder ändern.

Weitere Informationen über MSBuild für C++ finden Sie unter MSBuild (Visual C++).

Die folgenden Beispiele veranschaulichen, wann Sie Builds über die MSBuild-Befehlszeile anstelle der Visual Studio-IDE ausführen sollten.

  • Visual Studio ist nicht installiert.

  • Sie möchten die 64-Bit-Version von MSBuild verwenden. Diese Version von MSBuild ist normalerweise nicht erforderlich, ermöglicht MSBuild jedoch den Zugriff auf mehr Arbeitsspeicher.

  • Sie möchten einen Build in mehreren Prozessen ausführen. Sie können die IDE jedoch verwenden, um die gleichen Ergebnisse in Projekten in C++ und C# zu erzielen.

  • Sie möchten das Buildsystem ändern. Möglicherweise möchten Sie z. B. die folgenden Aktionen aktivieren:

    • Dateien vorverarbeiten, bevor sie den Compiler erreichen.

    • Kopieren Sie die Buildausgaben an eine andere Stelle.

    • Erstellen Sie komprimierte Dateien aus den Buildausgaben.

    • Führen Sie einen Nachverarbeitungsschritt durch. Beispielsweise können Sie eine Assembly mit einer anderen Version stempeln.

Sie können Code in der Visual Studio-IDE schreiben, aber Builds mit MSBuild ausführen. Des Weiteren können Sie Code in der IDE auf dem Entwicklungscomputer erstellen, jedoch eine MSBuild-Befehlszeile verwenden, um Code zu erstellen, der von mehreren Entwicklern integriert wird.

Hinweis

Sie können Team Foundation Build verwenden, um die Anwendung automatisch zu kompilieren, zu testen und bereitzustellen.Das Buildsystem kann Builds automatisch ausführen, wenn Entwickler Code z. B. als Teil einer fortlaufenden Integrationsstrategie oder gemäß einem Zeitplan (z. B. bei einem Build für einen nächtlichen Buildüberprüfungstest) einchecken.Team Foundation Build kompiliert den Code mithilfe von MSBuild.Weitere Informationen finden Sie unter Erstellen der Anwendung.

Dieses Thema enthält eine Übersicht über MSBuild. Ein einführendes Lernprogramm finden Sie unter Exemplarische Vorgehensweise: Verwenden von MSBuild.

In diesem Thema

  • Verwenden von MSBuild an einer Eingabeaufforderung

  • Projektdatei

    • Eigenschaften

    • Elemente

    • Aufgaben

    • Ziele

  • Buildprotokolle

  • Verwenden von MSBuild in Visual Studio

  • Festlegung von Zielversionen

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.

SicherheitshinweisSicherheitshinweis

Bevor Sie ein Projekt herunterladen, bestimmen Sie die Vertrauenswürdigkeit des Codes.

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.

Die folgenden Abschnitte beschreiben einige grundlegenden Elemente des MSBuild-Projektdateiformats. Ein Lernprogramm über das Erstellen einer grundlegenden Projektdatei 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. Durch den folgenden Code wird beispielsweise die Eigenschaft BuildDir mit dem Wert Build erstellt.

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

Sie können eine Eigenschaft bedingt definieren, indem Sie ein Condition-Attribut im Element platzieren. Sofern wenn die Bedingung nicht true ergibt, wird der Inhalt bedingter Elemente ignoriert. Im folgenden Beispiel wird das Configuration-Element definiert, wenn es noch nicht definiert wurde.

<Configuration  Condition=" '$(Configuration)' == '' ">Debug</Configuration>

Eigenschaften können mithilfe der Syntax "$(PropertyName)" über die gesamte Projektdatei hinweg referenziert werden. Beispielsweise wird mit $(BuildDir) und $(Configuration) auf die Eigenschaft in den vorangehenden Beispielen verwiesen.

Weitere Informationen zu Eigenschaften finden Sie unter MSBuild-Eigenschaften.

Elemente

Elemente sind Eingaben in das Buildsystem und stellen in der Regel Dateien 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 kann in der gesamten Projektdatei mit der Syntax "@(ItemType)" verwiesen werden. Auf den Elementtyp im Beispiel wird beispielsweise mit @(Compile) verwiesen.

In MSBuild muss bei Elementen und Attributnamen die Groß-/Kleinschreibung beachtet werden. Bei Namen von Eigenschaften, Elementen und Metadaten ist dies nicht der Fall. Im folgenden Beispiel werden der Compile-Elementtyp oder der comPile-Elementtyp oder eine beliebige andere Fallvariante erstellt und der Wert "one.cs;two.cs" zugewiesen.

<ItemGroup>
  <Compile Include="one.cs" />
  <comPile Include="two.cs" />
</ItemGroup>

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 enthält allgemeine Aufgaben, die Sie so ändern können, dass sie Ihren Anforderungen entsprechen. Beispiele hierfür sind Copy zum Kopieren von Dateien, MakeDir zum Erstellen von Verzeichnissen und Csc zum Kompilieren von Visual C#-Quellcodedateien. 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.

Buildprotokolle

Sie können Buildfehler, Warnungen und Meldungen in der Konsole oder auf anderen Ausgabegeräten protokollieren. Weitere Informationen finden Sie unter Erhalten von Buildprotokollen mit MSBuild und Protokollierung in MSBuild.

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 2.0 auf einer 32-Bit-Plattform und für die Ausführung in .NET Framework 4.5 auf einer 64-Bit-Plattform 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. auf 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 die aktuelle .NET Framework-Version abzielen.

  • Durch die Festlegung von Zielversionen wird garantiert, dass von einer Anwendung nur die im Zielframework und die auf der Zielplattform verfügbaren Funktionen verwendet werden.

Weitere Informationen finden Sie unter Übersicht über die 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.

Exemplarische Vorgehensweise: Verwenden von MSBuild

Die Bausteine von MSBuild werden eingeführt, und es wird gezeigt, wie MSBuild-Projekte erstellt, bearbeitet und debuggt werden, ohne die Visual Studio-IDE zu schließen.

MSBuild-Grundlagen

Stellt die vier Bausteine von MSBuild dar: Eigenschaften, Elemente, Ziele und Aufgaben.

MSBuild-Elemente

Hierin werden die allgemeinen Konzepte hinter dem MSBuild-Dateiformat sowie das Zusammenwirken der einzelnen Teile beschrieben.

MSBuild-Eigenschaften

Hierin werden Eigenschaften und Eigenschaftenauflistungen eingeführt. Eigenschaften sind Schlüssel/Wert-Paare, die zur Konfiguration von Builds verwendet werden können.

MSBuild-Ziele

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.

MSBuild-Aufgaben

Hierin wird gezeigt, wie eine Einheit von ausführbarem Code erstellt wird, die von MSBuild zum Ausführen unteilbarer Buildvorgänge verwendet werden kann.

MSBuild-Bedingungen

Hier wird erläutert, wie das Condition-Attribut in einem MSBuild-Element verwendet wird.

Weiterführende MSBuild-Konzepte

Hier werden die Batchverarbeitung, das Ausführen von Transformationen, die Festlegung von Zielversionen sowie andere erweiterte Verfahren veranschaulicht.

Protokollierung in MSBuild

Hier wird erläutert, wie Buildereignisse, Meldungen, Fehler protokolliert werden.

Zusätzliche MSBuild-Ressourcen

Hierin werden Community- und Unterstützungsressourcen für weitere Informationen zu MSBuild aufgeführt.

Verweis