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 verbleibenden 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 PATH
Variablen , INCLUDE
, , LIB
, LIBPATH
, und CONFIGURATION
PLATFORM
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
, , , Pre
oder 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.exe aus. |
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