Elementi interni di MSBuild per i progetti C++

Quando si impostano le proprietà del progetto nell'ambiente di sviluppo integrato (IDE) e quindi si salva il progetto, Visual Studio scrive le impostazioni del progetto nel file di progetto. Il file di progetto contiene impostazioni univoche per il progetto. Tuttavia, non contiene tutte le impostazioni necessarie per compilare il progetto. Il file di progetto contiene Import elementi che includono una rete di file di supporto aggiuntivi . I file di supporto contengono le proprietà, le destinazioni e le impostazioni rimanenti necessarie per compilare il progetto.

La maggior parte delle destinazioni e delle proprietà nei file di supporto esiste esclusivamente allo scopo di implementare il sistema di compilazione. Questo articolo illustra le destinazioni e le proprietà utili che è possibile specificare nella riga di comando di MSBuild. Per individuare altre destinazioni e proprietà, esaminare i file nelle directory dei file di supporto.

Directory dei file di supporto

Per impostazione predefinita, i file di supporto di Visual Studio primari si trovano nelle directory seguenti. Queste informazioni sono specifiche della versione.

Visual Studio 2022 e 2019

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

    Contiene i file di destinazione primari () e i file di proprietà (.targets.props) usati dalle destinazioni. Per impostazione predefinita, la $(VCTargetsPath) macro fa riferimento a questa directory. Il <version> segnaposto fa riferimento alla versione di Visual Studio: v170 per Visual Studio 2022, v160 per Visual Studio 2019 o v150 per Visual Studio 2017.

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

    Contiene i file di destinazione e proprietà specifici della piattaforma che sostituiscono le destinazioni e le proprietà nella relativa directory padre. Questa directory contiene anche una DLL che definisce le attività che vengono usate dalle destinazioni in questa directory. Il <platform> segnaposto rappresenta la sottodirectory ARM, ARM64, Win32 o x64.

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

    Contiene le directory che consentono alla compilazione di generare applicazioni C++ usando l'oggetto specificato <toolset>. Il <platform> segnaposto rappresenta la sottodirectory ARM, ARM64, Win32 o x64. Il <toolset> segnaposto rappresenta la sottodirectory del set di strumenti.

Visual Studio 2017

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

    Contiene i file di destinazione primari () e i file di proprietà (.targets.props) usati dalle destinazioni. Per impostazione predefinita, la $(VCTargetsPath) macro fa riferimento a questa directory.

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

    Contiene i file di destinazione e proprietà specifici della piattaforma che sostituiscono le destinazioni e le proprietà nella relativa directory padre. Questa directory contiene anche una DLL che definisce le attività che vengono usate dalle destinazioni in questa directory. Il <platform> segnaposto rappresenta la sottodirectory ARM, ARM64, Win32 o x64.

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

    Contiene le directory che consentono alla compilazione di generare applicazioni C++ usando l'oggetto specificato <toolset>. Il <platform> segnaposto rappresenta la sottodirectory ARM, Win32 o x64. Il <toolset> segnaposto rappresenta la sottodirectory del set di strumenti.

Visual Studio 2015 e versioni precedenti

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

    Contiene i file di destinazione primari () e i file di proprietà (.targets.props) usati dalle destinazioni. Per impostazione predefinita, la macro $(VCTargetsPath) fa riferimento a questa directory.

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

    Contiene i file di destinazione e proprietà specifici della piattaforma che sostituiscono le destinazioni e le proprietà nella relativa directory padre. Questa directory contiene anche una DLL che definisce le attività che vengono usate dalle destinazioni in questa directory. Il <platform> segnaposto rappresenta la sottodirectory ARM, Win32 o x64.

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

    Contiene le directory che consentono alla compilazione di generare applicazioni C++ usando l'oggetto specificato <toolset>. Il <version> segnaposto è V110 per Visual Studio 2012, V120 per Visual Studio 2013 e V140 per Visual Studio 2015. Il <platform> segnaposto rappresenta la sottodirectory ARM, Win32 o x64. Il <toolset> segnaposto rappresenta la sottodirectory del set di strumenti. Ad esempio, è v140 per la compilazione di app di Windows usando il set di strumenti di Visual Studio 2015. In alternativa, v120_xp compilare per Windows XP usando il set di strumenti di Visual Studio 2013.

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

    I percorsi che consentono alla compilazione di generare applicazioni di Visual Studio 2008 o Visual Studio 2010 non includono .<version> In queste versioni, il <platform> segnaposto rappresenta la sottodirectory Itanium, Win32 o x64. Il <toolset> segnaposto rappresenta la sottodirectory del set di strumenti v90 o v100.

File di supporto

Le directory dei file di supporto contengono file con queste estensioni:

Estensione Descrizione
.targets Contiene elementi XML Target che specificano le attività eseguite dalla destinazione. Può inoltre contenere elementi PropertyGroup, ItemGroup, ItemDefinitionGroup ed elementi Item definiti dall'utente utilizzabili per assegnare file e opzioni della riga di comando ai parametri delle attività.

Per altre informazioni, vedere Target Elemento (MSBuild).
.props Contiene elementi Property Group ed elementi XML Property definiti dall'utente che specificano le impostazioni di file e parametri usate durante una compilazione.

Può inoltre contenere elementi ItemDefinitionGroup ed elementi XML Item definiti dall'utente che specificano impostazioni aggiuntive. Gli elementi definiti in un gruppo di definizioni di elementi sono simili alle proprietà, ma non possono essere accessibili dalla riga di comando. I file di progetto di Visual Studio usano spesso gli elementi al posto delle proprietà per rappresentare le impostazioni.

Per altre informazioni, vedere Elemento (MSBuild),ItemDefinitionGroup Elemento (MSBuild) ed Item Elemento (MSBuild).ItemGroup
.xml Contiene elementi XML che dichiarano e inizializzano gli elementi dell'interfaccia utente dell'IDE. Ad esempio, le finestre delle proprietà, le pagine delle proprietà, i controlli casella di testo e i controlli casella di riepilogo.

I .xml file supportano direttamente l'IDE, non MSBuild. Tuttavia, i valori delle proprietà dell'IDE vengono assegnati agli elementi e alle proprietà di compilazione.

La maggior parte dei .xml file si trova in una sottodirectory specifica delle impostazioni locali. Ad esempio, i file per l'area Inglese-Stati Uniti sono in $(VCTargetsPath)\1033\.

Proprietà e destinazioni degli utenti

Per usare MSBuild in modo efficace, consente di conoscere quali proprietà e destinazioni sono utili e pertinenti. La maggior parte delle proprietà e delle destinazioni aiuta a implementare il sistema di compilazione di Visual Studio e non è rilevante per l'utente. In questa sezione vengono descritte le proprietà orientate agli utenti e le destinazioni che vale la pena conoscere.

Proprietà PlatformToolset

La proprietà PlatformToolset determina quale set di strumenti MSVC viene usato nella compilazione. Per impostazione predefinita, si usa il set di strumenti corrente. Quando questa proprietà è impostata, il relativo valore viene concatenato con stringhe letterali per formare il percorso. Si tratta della directory che contiene i file di proprietà e di destinazione necessari per compilare un progetto per una determinata piattaforma. Il set di strumenti della piattaforma deve essere installato per la compilazione con tale versione del set di strumenti della piattaforma.

Ad esempio, impostare la proprietà PlatformToolset su v140 per usare gli strumenti e le librerie di Visual Studio 2015 per compilare l'applicazione:

msbuild myProject.vcxproj /p:PlatformToolset=v140

Proprietà PreferredToolArchitecture

La proprietà PreferredToolArchitecture determina se nella compilazione vengono usati gli strumenti e il compilatore a 32 o a 64 bit. Questa proprietà non influisce sull'architettura o sulla configurazione della piattaforma di output. Per impostazione predefinita, MSBuild usa la versione x86 del compilatore e degli strumenti se questa proprietà non è impostata.

Ad esempio, impostare la proprietà PreferredToolArchitecture su x64 per usare il compilatore e gli strumenti a 64 bit per compilare l'applicazione:

msbuild myProject.vcxproj /p:PreferredToolArchitecture=x64

Proprietà UseEnv

Per impostazione predefinita, le impostazioni specifiche della piattaforma per il progetto corrente sostituiscono le PATHvariabili di ambiente , INCLUDE, LIBLIBPATH, CONFIGURATION, e PLATFORM . Impostare la UseEnv proprietà su true per garantire che le variabili di ambiente non vengano sottoposte a override.

msbuild myProject.vcxproj /p:UseEnv=true

Targets

Sono disponibili centinaia di destinazioni nei file di supporto di Visual Studio. Tuttavia, quasi tutte sono destinazioni orientate al sistema che l'utente può ignorare. La maggior parte delle destinazioni di sistema è preceduta da un carattere di sottolineatura (_) o ha un nome che inizia con PrepareFor, ComputeAfterBefore, , Pre, o .Post

Nella tabella seguente sono elencate diverse destinazioni utili orientate all'utente.

Destinazione Descrizione
BscMake Esegue lo strumento Microsoft Browse Information Maintenance Utility, bscmake.exe.
Build Compila il progetto.

Questa destinazione è l'impostazione predefinita per un progetto.
ClCompile Esegue lo strumento del compilatore MSVC, cl.exe.
Clean Elimina i file di compilazione temporanei e intermedi.
Lib Esegue lo strumento Gestione librerie a 32 bit di Microsoft, lib.exe.
Link Esegue lo strumento del linker MSVC, link.exe.
ManifestResourceCompile Estrae un elenco di risorse da un manifesto e quindi esegue lo strumento Compilatore di risorse di Microsoft Windows, rc.exe.
Midl Esegue lo strumento del compilatore MIDL (Microsoft Interface Definition Language), midl.exe.
Rebuild Pulisce e quindi compila il progetto.
ResourceCompile Esegue lo strumento Compilatore di risorse di Microsoft Windows, rc.exe.
XdcMake Esegue lo strumento documentazione XML, xdcmake.exe.
Xsd Esegue lo strumento XML Schema Definition, xsd.exe. Vedere la nota.

Nota

In Visual Studio 2017 e versioni successive il supporto del progetto C++ per .xsd i file è deprecato. È comunque possibile usare Microsoft.VisualC.CppCodeProvider aggiungendo CppCodeProvider.dll manualmente alla GAC.

Vedi anche

Riferimenti delle attività MSBuild
BscMake Attività
CL Attività
CPPClean Attività
LIB Attività
Link Attività
MIDL Attività
MT Attività
RC Attività
SetEnv Attività
VCMessage Attività
XDCMake Attività