MSBuild-Interna für C++-Projekte

Wenn Sie Projekteigenschaften in der IDE festlegen und dann das Projekt speichern, schreibt Visual Studio die Projekteinstellungen in die Projektdatei. Die Projektdatei enthält Einstellungen, die für Ihr Projekt eindeutig sind. Es enthält jedoch nicht alle Einstellungen, die zum Erstellen Ihres Projekts erforderlich sind. Die Projektdatei enthält Import Elemente, die ein Netzwerk zusätzlicher Supportdateien enthalten. Die Supportdateien enthalten die erneuten Standard Eigenschaften, Ziele und Einstellungen, die zum Erstellen des Projekts erforderlich sind.

Die meisten Ziele und Eigenschaften in den Unterstützungsdateien dienen ausschließlich der Implementierung des Buildsystems. In diesem Artikel werden nützliche Ziele und Eigenschaften erläutert, die Sie in der Befehlszeile MSBuild angeben können. Durchsuchen Sie die Dateien in den Unterstützungsdateiverzeichnissen, um mehr Ziele und Eigenschaften zu ermitteln.

Supportdateiverzeichnisse

Standardmäßig befinden sich die primären Visual Studio-Supportdateien in den folgenden Verzeichnissen. Diese Informationen sind versionsspezifisch.

Visual Studio 2022 und 2019

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\

    Enthält die primären Zieldateien (.targets) und Eigenschaftsdateien (.props), die von den Zielen verwendet werden. Standardmäßig verweist das $(VCTargetsPath) Makro auf dieses Verzeichnis. Der <version> Platzhalter bezieht sich auf die Visual Studio-Version: v170 für Visual Studio 2022, v160 für Visual Studio 2019 oder v150 für Visual Studio 2017.

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\Platforms\<platform>\

    Enthält plattformspezifische Ziel- und Eigenschaftsdateien, die die Ziele und Eigenschaften im übergeordneten Verzeichnis außer Kraft setzen. Dieses Verzeichnis enthält außerdem eine DLL, die die von den Zielen in diesem Verzeichnis verwendeten Aufgaben definiert. Der <platform> Platzhalter stellt das Unterverzeichnis ARM, ARM64, Win32 oder x64 dar.

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\Platforms\<platform>\PlatformToolsets\<toolset>\

    Enthält die Verzeichnisse, die es dem Build ermöglichen, C++-Anwendungen mithilfe des angegebenen <toolset>. Der <platform> Platzhalter stellt das Unterverzeichnis ARM, ARM64, Win32 oder x64 dar. Der <toolset> Platzhalter stellt das Unterverzeichnis des Toolset dar.

Visual Studio 2017

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\

    Enthält die primären Zieldateien (.targets) und Eigenschaftsdateien (.props), die von den Zielen verwendet werden. Standardmäßig verweist das $(VCTargetsPath) Makro auf dieses Verzeichnis.

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\Platforms\<platform>\

    Enthält plattformspezifische Ziel- und Eigenschaftsdateien, die die Ziele und Eigenschaften im übergeordneten Verzeichnis außer Kraft setzen. Dieses Verzeichnis enthält außerdem eine DLL, die die von den Zielen in diesem Verzeichnis verwendeten Aufgaben definiert. Der <platform> Platzhalter stellt das Unterverzeichnis ARM, ARM64, Win32 oder x64 dar.

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\Platforms\<platform>\PlatformToolsets\<toolset>\

    Enthält die Verzeichnisse, die es dem Build ermöglichen, C++-Anwendungen mithilfe des angegebenen <toolset>. Der <platform> Platzhalter stellt das Unterverzeichnis ARM, Win32 oder x64 dar. Der <toolset> Platzhalter stellt das Unterverzeichnis des Toolset dar.

Visual Studio 2015 und frühere Versionen

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\

    Enthält die primären Zieldateien (.targets) und Eigenschaftsdateien (.props), die von den Zielen verwendet werden. Standardmäßig verweist das $ (VCTargetsPath)-Makro auf dieses Verzeichnis.

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\Platforms\<platform>\

    Enthält plattformspezifische Ziel- und Eigenschaftsdateien, die die Ziele und Eigenschaften im übergeordneten Verzeichnis außer Kraft setzen. Dieses Verzeichnis enthält außerdem eine DLL, die die von den Zielen in diesem Verzeichnis verwendeten Aufgaben definiert. Der <platform> Platzhalter stellt das Unterverzeichnis ARM, Win32 oder x64 dar.

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\Platforms\<platform>\PlatformToolsets\<toolset>\

    Enthält die Verzeichnisse, die es dem Build ermöglichen, C++-Anwendungen mithilfe des angegebenen <toolset>. Der <version> Platzhalter ist V110 für Visual Studio 2012, V120 für Visual Studio 2013 und V140 für Visual Studio 2015. Der <platform> Platzhalter stellt das Unterverzeichnis ARM, Win32 oder x64 dar. Der <toolset> Platzhalter stellt das Unterverzeichnis des Toolset dar. Beispielsweise ist es v140 zum Erstellen von Windows-Apps mithilfe des Visual Studio 2015-Toolsets. Oder v120_xp, um windows XP mit dem Visual Studio 2013-Toolset zu erstellen.

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\Platforms\<platform>\PlatformToolsets\<toolset>\

    Die Pfade, mit denen der Build entweder Visual Studio 2008- oder Visual Studio 2010-Anwendungen generieren kann, enthalten nicht die <version>. In diesen Versionen stellt der <platform> Platzhalter das Unterverzeichnis Itanium, Win32 oder x64 dar. Der <toolset> Platzhalter stellt das Unterverzeichnis v90 oder v100 toolset dar.

Supportdateien

Die Supportdateiverzeichnisse enthalten Dateien mit diesen Erweiterungen:

Durchwahl Beschreibung
.targets Enthält Target-XML-Elemente, die die vom Ziel ausgeführten Aufgaben angeben. Enthält auch PropertyGroup-, ItemGroup- und ItemDefinitionGroup-Elemente sowie benutzerdefinierte Item-Elemente, die zum Zuweisen von Dateien und Befehlszeilenoptionen zu Aufgabenparametern verwendet werden.

Weitere Informationen finden Sie unter Element (MSBuild).For more information, see Target Element (MSBuild).
.props Enthält Property Group-XML-Elemente und benutzerdefinierte Property-XML-Elemente, die während eines Builds verwendete Datei- und Parametereinstellungen angeben.

Enthält auch ItemDefinitionGroup-XML-Elemente und benutzerdefinierte Item-XML-Elemente, die zusätzliche Einstellungen angeben. Elemente, die in einer Elementdefinitionsgruppe definiert sind, ähneln Eigenschaften, können aber nicht über die Befehlszeile aufgerufen werden. Visual Studio-Projektdateien verwenden häufig Elemente statt Eigenschaften, um Einstellungen darzustellen.

Weitere Informationen finden Sie unter ItemGroup "Element (MSBuild)", ItemDefinitionGroup "Element (MSBuild)" und Item "Element (MSBuild)".
.xml Enthält XML-Elemente, die IDE-Benutzeroberflächenelemente deklarieren und initialisieren. Eigenschaftenblätter, Eigenschaftenseiten, Textfeld-Steuerelemente und Listenfeld-Steuerelemente.

Die .xml Dateien unterstützen die IDE direkt, nicht MSBuild. Die Werte von IDE-Eigenschaften werden jedoch zur Erstellung von Eigenschaften und Elementen verwendet.

Die meisten .xml Dateien befinden sich in einem gebietsschemaspezifischen Unterverzeichnis. Beispielsweise befinden sich Dateien für die Region Englisch-USA in $(VCTargetsPath)\1033\.

Benutzerziele und -eigenschaften

Um MSBuild effektiv zu verwenden, hilft es zu wissen, welche Eigenschaften und Ziele nützlich und relevant sind. Die meisten Eigenschaften und Ziele helfen beim Implementieren des Visual Studio-Buildsystems und sind für den Benutzer nicht relevant. In diesem Abschnitt werden benutzerdefinierte Eigenschaften und Ziele beschrieben, die sie kennen können.

PlatformToolset-Eigenschaft

Die PlatformToolset-Eigenschaft bestimmt, welches MSVC-Toolset im Build verwendet wird. Standardmäßig wird das aktuelle Toolset verwendet. Wenn diese Eigenschaft festgelegt wird, wird der Wert mit Literalzeichenfolgen verkettet, um den Pfad zu bilden. Es ist das Verzeichnis, das die Eigenschaften- und Zieldateien enthält, die zum Erstellen eines Projekts für eine bestimmte Plattform erforderlich sind. Das Plattformtoolset muss installiert sein, um Builds mithilfe dieser Plattform-Toolsetversion zu erstellen.

Legen Sie beispielsweise die PlatformToolset-Eigenschaft auf v140 fest, um zur Erstellung der Anwendung Visual Studio 2015-Tools und Bibliotheken zu verwenden:

msbuild myProject.vcxproj /p:PlatformToolset=v140

PreferredToolArchitecture-Eigenschaft

Die PreferredToolArchitecture-Eigenschaft bestimmt, ob der 32-Bit- oder 64-Bit-Compiler sowie die entsprechenden Tools im Build verwendet werden. Diese Eigenschaft wirkt sich nicht auf die Architektur oder Konfiguration der Ausgabeplattform aus. Standardmäßig verwendet MSBuild die x86-Version des Compilers und tools, wenn diese Eigenschaft nicht festgelegt ist.

Legen Sie beispielsweise die PreferredToolArchitecture-Eigenschaft auf x64 fest, um den 64-Bit-Compiler und 64-Bit-Tools zum Erstellen Ihrer Anwendung zu verwenden:

msbuild myProject.vcxproj /p:PreferredToolArchitecture=x64

UseEnv-Eigenschaft

Standardmäßig setzen die plattformspezifischen Einstellungen für das aktuelle Projekt die PATHVariablen , INCLUDE, , LIB, LIBPATH, und CONFIGURATIONPLATFORM Umgebung außer Kraft. Legen Sie die UseEnv Eigenschaft fest, um true sicherzustellen, dass die Umgebungsvariablen nicht außer Kraft gesetzt werden.

msbuild myProject.vcxproj /p:UseEnv=true

Targets

In den Visual Studio-Supportdateien sind Hunderte von Zielen enthalten. Die meisten sind jedoch systemorientierte Ziele, die der Benutzer ignorieren kann. Die meisten Systemziele werden einem Unterstrich (_) vorangestellt oder haben einen Namen, der mit PrepareFor, , Compute, Before, After, , , Preoder Post.

In der folgenden Tabelle sind mehrere nützliche benutzerorientierte Ziele aufgeführt.

Target Beschreibung
BscMake Führt das Microsoft Browse Information Maintenance Utility-Tool aus. bscmake.exe
Build Erstellt das Projekt.

Dieses Ziel ist die Standardeinstellung für ein Projekt.
ClCompile Führt das MSVC-Compilertool aus. cl.exe
Clean Löscht temporäre und zwischengespeicherte Builddateien.
Lib Führt das Microsoft 32-Bit-Bibliotheks-Manager-Tool aus. lib.exe
Link Führt das MSVC-Linker-Tool aus. link.exe
ManifestResourceCompile Extrahiert eine Liste von Ressourcen aus einem Manifest und führt dann das Microsoft Windows-Ressourcencompiler-Tool rc.exeaus.
Midl Führt das Microsoft Interface Definition Language (MIDL)-Compilertool aus. midl.exe
Rebuild Bereinigt und erstellt das Projekt.
ResourceCompile Führt das Microsoft Windows-Ressourcencompiler-Tool aus. rc.exe
XdcMake Führt das XML-Dokumentationstool aus. xdcmake.exe
Xsd Führt das XML-Schemadefinitionstool aus. xsd.exe Siehe Hinweis.

Hinweis

In Visual Studio 2017 und höher ist die C++-Projektunterstützung für .xsd Dateien veraltet. Sie können weiterhin verwenden Microsoft.VisualC.CppCodeProvider , indem Sie das GAC manuell hinzufügen CppCodeProvider.dll .

Siehe auch

Referenz zu MSBuild-Tasks
BscMake Aufgabe
CL Aufgabe
CPPClean Aufgabe
LIB Aufgabe
Link Aufgabe
MIDL Aufgabe
MT Aufgabe
RC Aufgabe
SetEnv Aufgabe
VCMessage Aufgabe
XDCMake Aufgabe