/clr
(Compilazione Common Language Runtime)
Consente alle applicazioni e ai componenti di usare le funzionalità di Common Language Runtime (CLR) e di abilitare la compilazione C++/CLI.
Sintassi
/clr
[:
opzioni]
Argomenti
options
Uno o più degli argomenti delimitati da virgole seguenti.
Nessuno
Senza opzioni,
/clr
crea metadati per il componente. I metadati possono essere utilizzati da altre applicazioni CLR e consentono al componente di utilizzare tipi e dati nei metadati di altri componenti CLR. Per altre informazioni, vedere Assembly misti (nativi e gestiti).
netcore
Disponibile a partire da Visual Studio 2019 versione 16.4,
/clr:netcore
crea metadati e codice per il componente usando la versione più recente di .NET Framework multipiattaforma, nota anche come .NET Core. I metadati possono essere utilizzati da altre applicazioni .NET Core. L'opzione consente al componente di utilizzare tipi e dati nei metadati di altri componenti .NET Core.
nostdlib
Indica al compilatore di ignorare la directory predefinita
\clr
. Il compilatore genera errori se si includono più versioni di una DLL, ad esempio System.dll. Questa opzione consente di specificare il framework specifico da usare durante la compilazione.pure
/clr:pure
è deprecato. L'opzione è stata rimossa in Visual Studio 2017 e versioni successive. È consigliabile convertire in C# il codice che deve essere MSIL pure.safe
/clr:safe
è deprecato. L'opzione è stata rimossa in Visual Studio 2017 e versioni successive. È consigliabile convertire in C# il codice che deve essere safe MSIL.noAssembly
/clr:noAssembly
è deprecato. In alternativa, usare/LN
(Crea modulo MSIL).Indica al compilatore di non inserire un manifesto dell'assembly nel file di output. Per impostazione predefinita, l'opzione
noAssembly
non è attiva.Un programma gestito che non dispone di metadati di assembly nel manifesto è noto come modulo. L'opzione
noAssembly
può essere usata solo per produrre un modulo. Se si esegue la compilazione usando/c
e/clr:noAssembly
, specificare l'opzione/NOASSEMBLY
nella fase del linker per creare un modulo.Prima di Visual Studio 2005,
/clr:noAssembly
è necessario/LD
./LD
è ora implicito quando si specifica/clr:noAssembly
.initialAppDomain
initialAppDomain
è obsoleto. Consente l'esecuzione di un'applicazione C++/CLI nella versione 1 di CLR. Un'applicazione compilata tramiteinitialAppDomain
non deve essere usata da un'applicazione che usa ASP.NET perché non è supportata nella versione 1 di CLR.
Osservazioni:
Il codice gestito è codice che può essere controllato e gestito da CLR. Il codice gestito può accedere agli oggetti gestiti. Per altre informazioni, vedere /clr
Restrizioni.
Per informazioni su come sviluppare applicazioni che definiscono e utilizzano tipi gestiti in C++, vedere Estensioni dei componenti per piattaforme di runtime.
Un'applicazione compilata tramite /clr
può contenere o meno dati gestiti.
Per abilitare il debug in un'applicazione gestita, vedere /ASSEMBLYDEBUG
Aggiungere DebuggableAttribute.
Viene creata un'istanza solo dei tipi CLR nell'heap sottoposto a Garbage Collection. Per altre informazioni, vedere Classes and Structs (Classi e struct). Per compilare un funzione nel codice nativo, usare la direttiva pragma unmanaged
. Per altre informazioni, vedere managed
e unmanaged
.
Per impostazione predefinita, /clr
non è attivo. Quando /clr
è attivo, /MD
è anche in vigore. Per altre informazioni, vedere /MD
, /MT
/LD
(Usare la libreria di runtime). /MD
garantisce che le versioni collegate in modo dinamico e multithreading delle routine di runtime siano selezionate dai file di intestazione standard. Il multithreading è richiesto per la programmazione gestita perché il Garbage Collector CLR esegue i finalizzatori in un thread ausiliario.
Se si esegue la compilazione usando /c
, è possibile specificare il tipo CLR del file di output risultante usando l'opzione /CLRIMAGETYPE
del linker.
/clr
implica /EHa
e non sono supportate altre /EH
opzioni per /clr
. Per altre informazioni, vedere /EH
(Modello di gestione delle eccezioni).
Per informazioni su come determinare il tipo di immagine CLR di un file, vedere /CLRHEADER
.
Tutti i moduli passati a una determinata chiamata del linker devono essere compilati usando la stessa opzione del compilatore della libreria di runtime (/MD
o /LD
).
Usare l'opzione /ASSEMBLYRESOURCE
linker per incorporare una risorsa in un assembly. /DELAYSIGN
Le opzioni del linker , /KEYCONTAINER
e /KEYFILE
consentono anche di personalizzare la modalità di creazione di un assembly.
Quando /clr
viene usato, il _MANAGED
simbolo viene definito come 1. Per altre informazioni, vedere Macro predefinite.
Le variabili globali in un file di oggetti nativo vengono inizializzate per prime (durante DllMain
se l'eseguibile è una DLL) e quindi le variabili globali nella sezione gestita vengono inizializzate (prima dell'esecuzione di qualsiasi codice gestito). #pragma init_seg
influisce solo sull'ordine di inizializzazione nelle categorie gestite e non gestite.
Metadati e classi senza nome
Le classi senza nome vengono visualizzate nei metadati sotto nomi, ad $UnnamedClass$<crc-of-current-file-name>$<index>$
esempio , dove <index>
è un conteggio sequenziale delle classi senza nome nella compilazione. Ad esempio, l'esempio di codice seguente genera una classe senza nome nei metadati.
// clr_unnamed_class.cpp
// compile by using: /clr /LD
class {} x;
Usare ildasm.exe per visualizzare i metadati.
Per impostare l'opzione del compilatore nell'ambiente di sviluppo di Visual Studio
Aprire la finestra di dialogo Pagine delle proprietà del progetto. Per informazioni dettagliate, vedere Impostare il compilatore e le proprietà di compilazione.
Impostare l'elenco a discesa Configurazione su Tutte le configurazioni e impostare l'elenco a discesa Piattaforma su Tutte le piattaforme.
Selezionare la pagina Proprietà>di configurazione C/C++>Generale.
Modificare la proprietà Common Language Runtime Support . Scegli OK per salvare le modifiche.
Nota
Nell'IDE di Visual Studio l'opzione del /clr
compilatore può essere impostata singolarmente nella pagina Proprietà>di configurazione C/C++>Generale della finestra di dialogo Pagine delle proprietà. È tuttavia consigliabile usare un modello CLR per creare il progetto. Imposta tutte le proprietà necessarie per la corretta creazione di un componente CLR. Un altro modo per impostare queste proprietà consiste nell'usare la proprietà Common Language Runtime Support nella pagina Proprietà>di configurazione avanzate della finestra di dialogo Pagine delle proprietà. Questa proprietà imposta contemporaneamente tutte le altre opzioni degli strumenti correlate a CLR.
Per impostare l'opzione del compilatore a livello di codice
- Vedere CompileAsManaged.
Vedi anche
Opzioni del compilatore MSVC
Sintassi della riga di comando del compilatore MSVC