Allgemeine Makros für MSBuild-Befehle und -Eigenschaften

Abhängig von den Installationsoptionen kann Visual Studio Hunderte von Makros in einem MSBuild-basierten .vcxproj Visual Studio-Projekt zur Verfügung stellen. Die Makros entsprechen den MSBuild-Eigenschaften, die standardmäßig festgelegt werden, oder in .props oder .targets dateien oder in Ihren Projekteinstellungen. Sie können diese Makros an einer beliebigen Stelle im Dialogfeld Eigenschaftenseiten eines Projekts verwenden, an der Zeichenfolgen akzeptiert werden. Bei diesen Makros wird die Groß-/Kleinschreibung nicht beachtet.

Anzeigen der aktuellen Eigenschaften und Makros

Um alle derzeit verfügbaren Makros anzuzeigen, öffnen Sie die Projekteigenschaftenseiten über das Menü Standard, indem Sie "Projekteigenschaften>" auswählen. Wählen Sie im Dialogfeld "Eigenschaftenseiten " einen Eintrag aus, der ein Makro enthält. Sie können ein Makro anhand des Dollarzeichens und der Klammer erkennen, die seinen Namen umgeben.

Wählen Sie z. B. im linken Bereich konfigurationseigenschaften>VC++-Verzeichnisse aus, und wählen Sie dann im rechten Bereich "Verzeichnisse einschließen" aus. Der Wert für Include-Verzeichnisse lautet $(VC_IncludePath);$(WindowsSDK_IncludePath);.

Das Dollarzeichen und die Klammer, die diese beiden Werte umgibt, gibt an, dass sie Makros sind. Durch die Erweiterung dieser beiden Makros werden die zu durchsuchenden Verzeichnisse festgelegt.

Wählen Sie " Verzeichnisse einschließen" aus, und am Ende der Zeile wird eine Dropdownliste angezeigt. Wählen Sie die Dropdownschaltfläche und dann "Bearbeiten" aus. Wählen Sie im daraufhin angezeigten Dialogfeld "Verzeichnisse einschließen" die Schaltfläche "Makros>> " aus.

Dadurch wird das Dialogfeld erweitert, um den aktuellen Satz von Eigenschaften und Makros anzuzeigen, die für Visual Studio sichtbar sind, zusammen mit dem aktuellen Wert für jeden. Weitere Informationen finden Sie im Abschnitt "Angeben von benutzerdefinierten Werten " der C++-Projekteigenschaftenseitenreferenz.

Screenshot of the Visual Studio Include Directories dialog after choosing the Macros button.

Rechts befindet sich eine Liste von Visual Studio-Makros wie $(AllowLocalNetworkLoopback). Im linken Bereich wird der ausgewertete Wert der include-Verzeichniseigenschaft angezeigt. Im unteren Bereich wird angezeigt, welche Makros ggf. erweitert wurden, um den Wert der Verzeichniseigenschaft zu erzeugen. Da das Makro "Verzeichnisse einschließen" eine Kombination aus zwei anderen Makros ist: $(VC_IncludePath) und $(WindowsSDK_IncludePath), der untere Bereich mit der Bezeichnung "Geerbte Werte", listet diese beiden Makros auf.

Liste der häufig verwendeten Makros

In dieser Tabelle wird eine häufig verwendete Teilmenge der verfügbaren Makros beschrieben; hier sind viele weitere nicht aufgeführt. Wechseln Sie zum Dialogfeld "Makros ", um alle Eigenschaften und ihre aktuellen Werte in Ihrem Projekt anzuzeigen. Ausführliche Informationen dazu, wie MSBuild-Eigenschaftsdefinitionen erstellt und als Makros in .props, .targetsund .vcxproj Dateien verwendet werden, finden Sie unter MSBuild-Eigenschaften.

Makro Beschreibung
$(Configuration) Der Name der aktuellen Projektkonfiguration, z.B. „Debug“.
$(DevEnvDir) Das Installationsverzeichnis von Visual Studio (definiert als Laufwerk + Pfad); enthält den nachfolgenden umgekehrten Schrägstrich (\).
$(FrameworkDir) Das Verzeichnis, in dem .NET Framework installiert wurde.
$(FrameworkSDKDir) Das Verzeichnis, in dem Sie .NET Framework installiert haben. .NET Framework wurde möglicherweise als Teil von Visual Studio oder separat installiert.
$(FrameworkVersion) Die Version von .NET Framework, die von Visual Studio verwendet wurde. Kombiniert mit $(FrameworkDir)dem vollständigen Pfad zur Version von .NET Framework, die von Visual Studio verwendet wird.
$(FxCopDir) Pfad zur Datei fxcop.cmd Die fxcop.cmd Datei ist nicht in allen Visual Studio-Editionen installiert.
$(IntDir) Der Pfad zum Verzeichnis, das für Zwischendateien angegeben wurde. Wenn es sich um einen relativen Pfad handelt, wechseln Zwischendateien zu diesem Pfad, der an das Projektverzeichnis angefügt wurde. Dieser Pfad sollte einen nachfolgenden umgekehrten Schrägstrich (\) aufweisen. Er wird in den Wert für die Zwischenverzeichniseigenschaft aufgelöst. Verwenden $(OutDir) Sie diese Eigenschaft nicht, um diese Eigenschaft zu definieren.
$(OutDir) Der Pfad zum Ausgabedateiverzeichnis. Wenn es sich um einen relativen Pfad handelt, wechseln Ausgabedateien zu diesem Pfad, der an das Projektverzeichnis angefügt wurde. Dieser Pfad sollte einen nachfolgenden umgekehrten Schrägstrich (\) aufweisen. Er wird in den Wert für die Output Directory-Eigenschaft aufgelöst. Verwenden $(IntDir) Sie diese Eigenschaft nicht, um diese Eigenschaft zu definieren.
$(Platform) Der Name der aktuellen Projektplattform (z.B. „Win32“).
$(PlatformShortName) Der kurze Name der aktuellen Architektur, z. B. "x86" oder "x64".
$(ProjectDir) Das Verzeichnis des Projekts (definiert als Laufwerk + Pfad); enthält den nachfolgenden umgekehrten Schrägstrich (\).
$(ProjectExt) Die Dateierweiterung des Projekts. Sie umfasst den „.“ vor der Dateierweiterung.
$(ProjectFileName) Der Dateiname des Projekts (als „Basisname + Dateierweiterung“ definiert).
$(ProjectName) Der Basisname des Projekts.
$(ProjectPath) Der absolute Pfadname des Projekts (als „Laufwerk + Pfad + Basisname + Dateierweiterung“ definiert).
$(PublishDir) Der Ausgabespeicherort für das Veröffentlichungsziel; enthält den nachfolgenden umgekehrten Schrägstrich (\). Standardmäßig wird der $(OutDir)app.publish\ Ordner verwendet.
$(RemoteMachine) Auf der Debugeigenschaftenseite auf den Wert der Remote Machine -Eigenschaft festgelegt. Weitere Informationen finden Sie unter Ändern von Project Einstellungen für eine C/C++-Debugkonfiguration.
$(RootNameSpace) Der Namespace, falls vorhanden, der die Anwendung enthält.
$(SolutionDir) Das Verzeichnis der Lösung (definiert als Laufwerk + Pfad); enthält den nachfolgenden umgekehrten Schrägstrich (\). Wird nur bei der Erstellung einer Projektmappe in der IDE definiert.
$(SolutionExt) Die Dateierweiterung der Projektmappe. Sie umfasst den „.“ vor der Dateierweiterung. Wird nur bei der Erstellung einer Projektmappe in der IDE definiert.
$(SolutionFileName) Der Dateiname der Projektmappe (als „Basisname + Dateierweiterung“ definiert). Wird nur bei der Erstellung einer Projektmappe in der IDE definiert.
$(SolutionName) Der Basisname der Projektmappe. Wird nur bei der Erstellung einer Projektmappe in der IDE definiert.
$(SolutionPath) Der absolute Pfadname der Projektmappe (als „Laufwerk + Pfad + Basisname + Dateierweiterung“ definiert). Wird nur bei der Erstellung einer Projektmappe in der IDE definiert.
$(TargetDir) Das Verzeichnis der primären Ausgabedatei für den Build (definiert als Laufwerk + Pfad); enthält den nachfolgenden umgekehrten Schrägstrich (\).
$(TargetExt) Die Dateierweiterung der primären Ausgabedatei für den Build. Sie umfasst den „.“ vor der Dateierweiterung.
$(TargetFileName) Der Dateiname der primären Ausgabedatei für den Build (als „Basisname + Dateierweiterung“ definiert).
$(TargetName) Der Basisname der primären Ausgabedatei für den Build.
$(TargetPath) Der absolute Pfadname der primären Ausgabedatei für den Build (als „Laufwerk + Pfad + Basisname + Dateierweiterung“ definiert).
$(VCInstallDir) Das Verzeichnis, das den C++-Inhalt Ihrer Visual Studio-Installation enthält. Diese Eigenschaft enthält die Version des zielbezogenen Microsoft C++-Toolsets (MSVC), das möglicherweise von visual Studio gehostet wird. Enthält z. B. beim Erstellen mit $(PlatformToolset) = v140, $(VCInstallDir) den Pfad zur Visual Studio 2015-Installation.
$(VSInstallDir) Das Verzeichnis, in dem Visual Studio installiert wurde. Diese Eigenschaft enthält die Version des angezielten Visual Studio-Toolsets, die sich möglicherweise vom Visual Studio-Host unterscheidet. Enthält z. B. beim Erstellen mit $(PlatformToolset) = v110dem $(VSInstallDir) Pfad zur Visual Studio 2012-Installation den Pfad.
$(WebDeployPath) Der relative Pfad vom Stamm der Webbereitstellung zum Speicherort der Projektausgaben.
$(WebDeployRoot) Der absolute Pfad zum Speicherort von <localhost>. Beispielsweise c:\inetpub\wwwroot.

Veraltete Makros

Das Buildsystem für C++ wurde zwischen Visual Studio 2008 und Visual Studio 2010 erheblich geändert. Viele Makros, die in früheren Projekttypen verwendet werden, wurden in neue geändert. Diese Makros werden nicht mehr verwendet oder durch mindestens eine entsprechende Eigenschaft oder ein Elementmetadatenmakro (%(item-name)) ersetzt. Das Migrationstool kann Makros aktualisieren, die als "migriert" gekennzeichnet sind. Wenn ein Projekt, das das Makro enthält, von Visual Studio 2008 oder früher zu Visual Studio 2010 migriert wird, konvertiert Visual Studio das Makro in das entsprechende aktuelle Makro. Höhere Versionen von Visual Studio können Projekte von Visual Studio 2008 und früher nicht in den neuen Projekttyp konvertieren. Sie müssen diese Projekte in zwei Schritten konvertieren. Konvertieren Sie sie zunächst in Visual Studio 2010, und konvertieren Sie das Ergebnis anschließend in ihre neuere Version von Visual Studio. Weitere Informationen finden Sie in der Übersicht über potenzielle Probleme beim Upgrade.

Makro Beschreibung
$(InputDir) (Migriert.) Das Verzeichnis der Eingabedatei (definiert als Laufwerk + Pfad); enthält den nachfolgenden umgekehrten Schrägstrich (\). Wenn es sich bei dem Projekt um die Eingabe handelt, entspricht $(ProjectDir)dieses Makro dem .
$(InputExt) (Migriert.) Die Dateierweiterung der Eingabedatei. Sie umfasst den „.“ vor der Dateierweiterung. Wenn es sich bei dem Projekt um die Eingabe handelt, entspricht $(ProjectExt)dieses Makro dem . Bei Quelldateien entspricht %(Extension)sie dem .
$(InputFileName) (Migriert.) Der Dateiname der Eingabedatei (definiert als Basisname + Dateierweiterung). Wenn es sich bei dem Projekt um die Eingabe handelt, entspricht $(ProjectFileName)dieses Makro dem . Bei Quelldateien entspricht %(Identity)sie dem .
$(InputName) (Migriert.) Der Basisname der Eingabedatei. Wenn es sich bei dem Projekt um die Eingabe handelt, entspricht $(ProjectName)dieses Makro dem . Bei Quelldateien entspricht %(Filename)sie dem .
$(InputPath) (Migriert.) Der absolute Pfadname der Eingabedatei (definiert als Laufwerk + Pfad + Basisname + Dateierweiterung). Wenn es sich bei dem Projekt um die Eingabe handelt, entspricht $(ProjectPath)dieses Makro dem . Bei Quelldateien entspricht %(FullPath)sie dem .
$(ParentName) Der Name des Elements, das dieses Projektelement enthält. Bei diesem Makro handelt es sich um den Namen des übergeordneten Ordners oder den Projektnamen.
$(SafeInputName) Der Name der Datei als gültiger Klassenname, ohne die Dateierweiterung. Diese Eigenschaft hat keine genaue Entsprechung.
$(SafeParentName) Der Name des unmittelbar übergeordneten Elements im gültigen Namensformat. Beispielsweise ist ein Formular das übergeordnete Element einer .resx Datei. Diese Eigenschaft hat keine genaue Entsprechung.
$(SafeRootNamespace) Der Namespacename, unter dem die Projekt-Assistenten Code hinzufügen sollen. Dieser Namespacename enthält nur Zeichen, die in einem gültigen C++-Bezeichner zulässig wären. Diese Eigenschaft hat keine genaue Entsprechung.

Siehe auch

Visual Studio-Projekte: C++
Visual C++-Handbuch: Portieren und Aktualisieren
Überblick über potenzielle Upgradeprobleme (Visual C++)
Bekannte MSBuild-Elementmetadaten