Macro comuni per i comandi e le proprietà di MSBuild

A seconda delle opzioni di installazione, Visual Studio può rendere disponibili centinaia di macro in un progetto di Visual Studio basato su .vcxproj MSBuild. Le macro corrispondono alle proprietà di MSBuild impostate per impostazione predefinita o nei .props file o .targets nelle impostazioni del progetto. È possibile usare queste macro in qualsiasi punto della finestra di dialogo Pagine delle proprietà di un progetto in cui sono accettate le stringhe. Queste macro non fanno distinzione tra maiuscole e minuscole.

Visualizzare le proprietà e le macro correnti

Per visualizzare tutte le macro attualmente disponibili, aprire le pagine delle proprietà del progetto dal menu principale selezionando Proprietà progetto>. Nella finestra di dialogo Pagine delle proprietà scegliere una voce contenente una macro. È possibile riconoscere una macro in base al segno di dollaro e alle parentesi che ne racchiudono il nome.

Nel riquadro sinistro, ad esempio, selezionare Proprietà di configurazione Directory>VC++ e quindi nel riquadro destro selezionare Includi directory. Il valore per Le directory di inclusione è $(VC_IncludePath);$(WindowsSDK_IncludePath);.

Il segno del dollaro e le parentesi che circondano questi due valori indicano che sono macro. L'espansione di queste due macro imposta le directory di inclusione da cercare.

Selezionare Includi directory e viene visualizzato un elenco a discesa alla fine della riga. Selezionare il pulsante a discesa, quindi selezionare Modifica. Nella finestra di dialogo Includi directory visualizzata selezionare il pulsante Macro>>.

In questo modo viene espansa la finestra di dialogo per visualizzare il set corrente di proprietà e macro visibili a Visual Studio, insieme al valore corrente per ognuno di essi. Per altre informazioni, vedere la sezione Specifica di valori definiti dall'utente della pagina delle proprietà del progetto C++.

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

A destra è riportato un elenco di macro di Visual Studio, ad esempio $(AllowLocalNetworkLoopback). Il riquadro sinistro mostra il valore valutato della proprietà della directory di inclusione. Nel riquadro inferiore vengono visualizzate le macro espanse, se presenti, per produrre il valore della proprietà della directory di inclusione. Poiché la macro Includi directory è una combinazione di due altre macro, $(VC_IncludePath) e $(WindowsSDK_IncludePath), il riquadro inferiore, con l'etichetta Valori ereditati, elenca le due macro.

Elenco delle macro comuni

Questa tabella descrive un subset comunemente utilizzato delle macro disponibili; ci sono molti altri non elencati qui. Passare alla finestra di dialogo Macro per visualizzare tutte le proprietà e i relativi valori correnti nel progetto. Per informazioni dettagliate su come vengono create e usate le definizioni delle proprietà MSBuild come macro nei .propsfile , .targetse .vcxproj , vedere Proprietà di MSBuild.

Macro Descrizione
$(Configuration) Nome della configurazione di progetto corrente, ad esempio "Debug".
$(DevEnvDir) Directory di installazione di Visual Studio (definita come unità + percorso); include la barra rovesciata finale (\).
$(FrameworkDir) Directory nella quale è stato installato .NET Framework.
$(FrameworkSDKDir) Directory nella quale è stato installato .NET Framework. .NET Framework potrebbe essere stato installato come parte di Visual Studio o separatamente.
$(FrameworkVersion) Versione di .NET Framework usata da Visual Studio. Combinato con $(FrameworkDir), il percorso completo della versione di .NET Framework usato da Visual Studio.
$(FxCopDir) Percorso del fxcop.cmd file. Il fxcop.cmd file non è installato in tutte le edizioni di Visual Studio.
$(IntDir) Percorso della directory specificata dei file intermedi. Se si tratta di un percorso relativo, i file intermedi passano a questo percorso aggiunto alla directory del progetto. Questo percorso deve avere una barra rovesciata finale (\). Viene risolto nel valore per la proprietà Intermediate Directory . Non usare $(OutDir) per definire questa proprietà.
$(OutDir) Percorso della directory dei file di output. Se si tratta di un percorso relativo, i file di output passano a questo percorso aggiunto alla directory del progetto. Questo percorso deve avere una barra rovesciata finale (\). Viene risolto nel valore per la proprietà Directory di output. Non usare $(IntDir) per definire questa proprietà.
$(Platform) Nome della piattaforma del progetto corrente, ad esempio "Win32".
$(PlatformShortName) Nome breve dell'architettura corrente, ad esempio "x86" o "x64".
$(ProjectDir) Directory del progetto (definita come unità + percorso); include la barra rovesciata finale (\).
$(ProjectExt) Estensione di file del progetto. È incluso il punto '.' prima dell'estensione.
$(ProjectFileName) Nome file del progetto (definito da nome di base + estensione di file).
$(ProjectName) Nome base del progetto.
$(ProjectPath) Nome del percorso assoluto del progetto (definito da unità + percorso + nome di base + estensione di file).
$(PublishDir) Percorso di output per la destinazione di pubblicazione; include la barra rovesciata finale (\). Il valore predefinito è la $(OutDir)app.publish\ cartella .
$(RemoteMachine) Impostare sul valore della proprietà Remote Machine nella pagina delle proprietà Debug. Per altre informazioni, vedere Modifica del Impostazioni di progetto per una configurazione di debug C/C++.
$(RootNameSpace) Eventuale spazio dei nomi contenente l'applicazione.
$(SolutionDir) Directory della soluzione (definita come unità + percorso); include la barra rovesciata finale (\). Definita solo quando si compila una soluzione nell'IDE.
$(SolutionExt) Estensione di file della soluzione. È incluso il punto '.' prima dell'estensione. Definita solo quando si compila una soluzione nell'IDE.
$(SolutionFileName) Nome file della soluzione (definito da nome di base + estensione di file). Definita solo quando si compila una soluzione nell'IDE.
$(SolutionName) Nome base della soluzione. Definita solo quando si compila una soluzione nell'IDE.
$(SolutionPath) Nome del percorso assoluto della soluzione (definito da unità + percorso + nome di base + estensione di file). Definita solo quando si compila una soluzione nell'IDE.
$(TargetDir) Directory del file di output primario per la compilazione (definita come unità + percorso); include la barra rovesciata finale (\).
$(TargetExt) Estensione di file del file di output principale per la compilazione. È incluso il punto '.' prima dell'estensione.
$(TargetFileName) Nome file del file di output principale per la compilazione (definito da nome di base + estensione di file).
$(TargetName) Nome di base del file di output principale per la compilazione.
$(TargetPath) Nome del percorso assoluto del file di output principale per la compilazione (definito come unità + percorso + nome di base + estensione di file).
$(VCInstallDir) Directory che contiene il contenuto C++ dell'installazione di Visual Studio. Questa proprietà contiene la versione del set di strumenti di Microsoft C++ (MSVC) di destinazione, che potrebbe essere diverso dall'host Visual Studio. Ad esempio, quando si compila con $(PlatformToolset) = v140, $(VCInstallDir) contiene il percorso dell'installazione di Visual Studio 2015.
$(VSInstallDir) Directory nella quale è stato installato Visual Studio. Questa proprietà contiene la versione del set di strumenti Visual Studio di destinazione che potrebbe essere diversa dalla versione dell'host di Visual Studio. Ad esempio, quando si compila con $(PlatformToolset) = v110, $(VSInstallDir) contiene il percorso dell'installazione di Visual Studio 2012.
$(WebDeployPath) Percorso relativo dalla radice di distribuzione Web alla posizione degli output del progetto.
$(WebDeployRoot) Percorso assoluto della posizione di <localhost>. Ad esempio: c:\inetpub\wwwroot.

Macro obsolete

Il sistema di compilazione per C++ è stato modificato in modo significativo tra Visual Studio 2008 e Visual Studio 2010. Molte macro usate nei tipi di progetto precedenti sono state modificate in nuove. Queste macro non vengono più utilizzate o sostituite da una o più proprietà equivalenti o da valori di macro di metadati elemento (%(item-name)). Lo strumento di migrazione può aggiornare le macro contrassegnate come "migrated". Se viene eseguita la migrazione di un progetto contenente la macro da Visual Studio 2008 o versioni precedenti a Visual Studio 2010, Visual Studio converte la macro nella macro corrente equivalente. Le versioni più recenti di Visual Studio non eseguono la conversione dei progetti di Visual Studio 2008 e versioni precedenti nel nuovo tipo di progetto. È necessario convertire i progetti eseguendo due passaggi: eseguire prima la conversione in Visual Studio 2010 e quindi convertire il risultato nella versione più recente di Visual Studio. Per altre informazioni, vedere la panoramica sui potenziali problemi di aggiornamento.

Macro Descrizione
$(InputDir) (Migrato). Directory del file di input (definito come unità + percorso); include la barra rovesciata finale (\). Se il progetto è l'input, questa macro equivale a $(ProjectDir).
$(InputExt) (Migrato). Estensione del file di input. È incluso il punto '.' prima dell'estensione. Se il progetto è l'input, questa macro equivale a $(ProjectExt). Per i file di origine, equivale a %(Extension).
$(InputFileName) (Migrato). Nome file del file di input (definito come nome di base + estensione file). Se il progetto è l'input, questa macro equivale a $(ProjectFileName). Per i file di origine, equivale a %(Identity).
$(InputName) (Migrato). Nome di base del file di input. Se il progetto è l'input, questa macro equivale a $(ProjectName). Per i file di origine, equivale a %(Filename).
$(InputPath) (Migrato). Nome del percorso assoluto del file di input (definito come unità + percorso + nome di base + estensione file). Se il progetto è l'input, questa macro equivale a $(ProjectPath). Per i file di origine, equivale a %(FullPath).
$(ParentName) Nome dell'elemento contenente questo elemento del progetto. Questa macro è il nome della cartella padre o il nome del progetto.
$(SafeInputName) Nome file come nome di classe valido, meno l'estensione di file. Questa proprietà non ha un equivalente esatto.
$(SafeParentName) Nome del padre diretto in un formato di nome valido. Ad esempio, un modulo è l'elemento padre di un .resx file. Questa proprietà non ha un equivalente esatto.
$(SafeRootNamespace) Nome dello spazio dei nomi in cui le procedure guidate del progetto devono aggiungere codice. Questo nome dello spazio dei nomi contiene solo caratteri consentiti in un identificatore C++ valido. Questa proprietà non ha un equivalente esatto.

Vedi anche

Progetti di Visual Studio - C++
Guida al porting e aggiornamento in Visual C++
Panoramica dei potenziali problemi di aggiornamento
Metadati di elementi noti di MSBuild