/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 tramite initialAppDomain 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 managede 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 /EHae 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. /DELAYSIGNLe opzioni del linker , /KEYCONTAINERe /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

  1. Aprire la finestra di dialogo Pagine delle proprietà del progetto. Per informazioni dettagliate, vedere Impostare il compilatore e le proprietà di compilazione.

  2. Impostare l'elenco a discesa Configurazione su Tutte le configurazioni e impostare l'elenco a discesa Piattaforma su Tutte le piattaforme.

  3. Selezionare la pagina Proprietà>di configurazione C/C++>Generale.

  4. 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

Vedi anche

Opzioni del compilatore MSVC
Sintassi della riga di comando del compilatore MSVC