Share via


MSBuild

Microsoft Build Engine ist eine Plattform zum Erstellen von Anwendungen.Dieses Modul, das auch als MSBuild ist, stellt ein XML-Schema für eine Projektdatei bereit, die steuert, wie die Buildplattform Software verarbeitet und erstellt.Visual Studio MSBuild verwendet, jedoch hängt nicht von Visual Studio ab. Mit msbuild.exe auf dem Projekt- oder Projektmappendatei aufrufen, können Sie Produkte in Umgebungen orchestrieren und erstellen, in der Visual Studio nicht installiert ist.

Visual Studio MSBuild verwendet, um verwaltete Projekte zu laden und zu erstellen.Die Projektdateien in Visual Studio (.csproj, VBPROJ, vcxproj und andere) enthalten MSBuild XML-Code, der ausgeführt wird, wenn Sie ein Projekt erstellen, indem Sie die IDE verwenden.Visual Studio-Projekte importieren alle erforderlichen Einstellungen und Buildprozesse, um typische Entwicklungsarbeit zu treffen, aber Sie können sie erweitern oder ändern aus Visual Studio oder einen XML-Editor verwenden.

Die folgenden Beispiele veranschaulichen, als Sie möglicherweise Builds ausführen, indem Sie eine MSBuild-Befehlszeile anstelle der Visual Studio-IDE verwenden.

  • Visual Studio ist nicht installiert.

  • Sie möchten die 64-Bit-Version von MSBuild verwenden.Diese Version von MSBuild ist normalerweise nicht erforderlich, aber sie können MSBuild, um auf mehr Arbeitsspeicher zuzugreifen.

  • Sie möchten einen Build in mehreren Prozessen ausführen.Sie können jedoch die IDE verwenden, um die gleiche Auswirkungen auf Projekte in C++ und, beginnend mit Visual Studio 2012 zu erzielen, in C#.

  • Sie möchten das Buildsystem ändern.Beispielsweise können Sie die folgenden Aktionen aktivieren:

    • Vorverarbeitungsdateien, bevor der Compiler erreichen.

    • Kopieren Sie die Buildausgaben an eine andere Stelle.

    • Erstellen Sie komprimierte Dateien aus den Buildausgaben.

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

Sie können, Code in der Visual Studio-IDE schreiben aber führen Builds aus, indem Sie MSBuild verwenden.Alternativ können Sie Code in der IDE auf einem Entwicklungscomputer erstellen jedoch eine MSBuild-Befehlszeile verwenden, um Code zu erstellen, der von mehreren Entwicklern integriert ist.

HinweisHinweis

Sie können Team Foundation Build verwenden, um die Anwendung automatisch zu kompilieren, bereitzustellen und zu testen.das Buildsystem kann Builds automatisch ausführen, wenn Entwickler in Code (beispielsweise, als Teil einer fortlaufenden Integrationsstrategie) oder gemäß einem Zeitplan überprüfen (beispielsweise, ein nächtlicher Buildüberprüfungstestbuild).Team Foundation Build kompiliert den Code, indem MSBuild verwendet.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

  • Zielversionen festlegen

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

MSBuild verwendet ein XML-basiertes Projektdateiformat, das einfach und erweiterbar ist.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 dargestellt werden können, um Builds über verschiedene Projekte im Produkt fortlaufend ausgeführt werden können.

In den folgenden Abschnitten werden einige der Grundelemente des MSBuild-Projektdateiformats. Ein Lernprogramm darüber, wie Sie eine grundlegende Projektdatei, finden Sie unter Exemplarische Vorgehensweise: Erstellen einer neuen MSBuild-Projektdatei erstellt.

Dd393574.collapse_all(de-de,VS.110).gifEigenschaften

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.Beispielsweise erstellt der folgende Code eine Eigenschaft, die BuildDir genannt wird, die einen Wert aus Build verfügt.

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

Sie können eine Eigenschaft bedingt definieren, indem Sie ein Condition-Attribut im - Element einfügen.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>

Auf Eigenschaften wird in der gesamten Projektdatei mit der Syntax %(PropertyName) verwiesen.Beispielsweise können Sie die Eigenschaften in den vorherigen Beispielen verweisen, indem Sie $(BuildDir) und $(Configuration) verwenden.

Weitere Informationen zu Eigenschaften finden Sie unter MSBuild-Eigenschaften.

Dd393574.collapse_all(de-de,VS.110).gifElemente

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 wird in der gesamten Projektdatei mit der Syntax @(ItemType) verwiesen.Auf den Elementtyp im Beispiel wird beispielsweise mit @(Compile) verwiesen.

In MSBuild sind Element- und Attributnamen beachtet.Allerdings sind Eigenschaft, Elementen und Metadaten nicht.Das folgende Beispiel erstellt den Elementtyp Compile, comPile oder ein anderes Fallvariante und gibt dem Elementtyp den Wert "one.cs; two.cs".

<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.

Dd393574.collapse_all(de-de,VS.110).gifAufgaben

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 ändern können, um den Anforderungen anpassen.Beispiele sind Kopie, das Dateien, MakeDir, das Verzeichnisse erstellt und Csc kopiert, das Visual C#quellcodedateien kompiliert.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.

Dd393574.collapse_all(de-de,VS.110).gifZiele

Durch Ziele werden Aufgaben in einer bestimmten Reihenfolge gruppiert und Abschnitte der Projektdatei als Einstiegspunkte in den Buildprozess verfügbar gemacht.Ziele werden häufig in logischen Abschnitten, die Lesbarkeit zu verbessern gruppiert 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 Verweisen erfordern erstellt werden, können Sie ein Ziel erstellen, das Verweise erstellt und dieses Ziel anschließend über jeden Einstiegspunkt aus, in dem es benötigt hat.

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 verwendet werden, um Beziehungen unter miteinander zu beschreiben und Abhängigkeitsanalysen durchführen, damit ganze Bereiche des Buildprozesses übersprungen werden können, wenn dieses Ziel aktuell ist.Weitere Informationen zu Zielen finden Sie unter MSBuild-Ziele.

Buildprotokolle

Sie können Buildfehler, Warnungen und Meldungen in der Konsole oder einem anderen Ausgabegerät 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 hinzugefügt oder geändert werden, indem die Visual Studio-Schnittstelle verwendet, 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 integriertes Visual Studio oder an einer Eingabeaufforderung sein kann (auch wenn Visual Studio nicht installiert ist), und die Ergebnisse sind identisch.

Ein Lernprogramm zum Verwenden von MSBuild in Visual Studio finden Sie unter Exemplarische Vorgehensweise: Verwenden von MSBuild.

Zielversionen festlegen

Mit Visual Studio können Sie eine Anwendung zur Ausführung in verschiedenen Versionen von .NET Framework kompilieren.Beispielsweise können Sie eine Anwendung kompilieren, auf .NET Framework 2.0 auf einer 32-Bit-Plattform ausgeführt, und Sie können dieselbe Anwendung kompilieren, auf .NET Framework 4.5 auf einer 64-Bit-Plattform ausgeführt werden.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 andere Frameworks als .NET Framework beispielsweise Silverlight.

  • Sie können auf ein Frameworkprofil abzielen, das eine vordefinierte Teilmenge eines Zielframeworks ist.

  • Wenn ein Service Pack für die aktuelle Version von .NET Framework freigegeben wird, können Sie es abzielen.

  • Festlegung von Zielversionen wird sichergestellt, dass eine Anwendung nur die Funktionen verwendet, die im Zielframework und - plattform verfügbar ist.

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

Stellt die Bausteine von MSBuild und es wird gezeigt, wie MSBuild-Projekte erstellt, bearbeitet und gedebuggt 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

Die gibt, die Batchverarbeitung, das Ausführen von Transformationen, die Festlegung von Zielversionen und andere erweiterte Techniken.

Protokollierung in MSBuild

Beschreibt, wie Buildereignisse, Meldungen und Fehler protokolliert.

Zusätzliche MSBuild-Ressourcen

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

Verweis