/clr (Compilazione Common Language Runtime)/clr (Common Language Runtime Compilation)

Consente alle applicazioni e ai componenti di usare le funzionalità del Common Language Runtime (CLR) e Abilita la compilazione di C++/CLI.Enables applications and components to use features from the common language runtime (CLR) and enables C++/CLI compilation.

SintassiSyntax

/clr[:Opzioni]/clr[:options]

ArgomentiArguments

Opzionioptions
Uno o più degli argomenti delimitati da virgole seguenti.One or more of the following comma-separated arguments.

  • Nessunonone

    Senza opzioni, /clr Crea i metadati per il componente.With no options, /clr creates metadata for the component. I metadati possono essere utilizzati da altre applicazioni CLR e consentono al componente di utilizzare i tipi e i dati nei metadati di altri componenti CLR.The metadata can be consumed by other CLR applications, and enables the component to consume types and data in the metadata of other CLR components. Per altre informazioni, vedere Assembly misti (nativi e gestiti).For more information, see Mixed (Native and Managed) Assemblies.

  • 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.Available starting in Visual Studio 2019 version 16.4, /clr:netcore creates metadata and code for the component using the latest cross-platform .NET framework, also known as .NET Core. I metadati possono essere usati da altre applicazioni .NET Core.The metadata can be consumed by other .NET Core applications. L'opzione consente al componente di utilizzare i tipi e i dati nei metadati di altri componenti di .NET Core.And, the option enables the component to consume types and data in the metadata of other .NET Core components.

  • nostdlib

    Indica al compilatore di ignorare la directory predefinita \clr .Instructs the compiler to ignore the default \clr directory. Il compilatore genera errori se si includono più versioni di una DLL, ad esempio System.dll.The compiler produces errors if you include multiple versions of a DLL, such as System.dll. Questa opzione consente di specificare il Framework specifico da usare durante la compilazione.This option lets you specify the specific framework to use during compilation.

  • pure

    /clr:pure è deprecato./clr:pure is deprecated. L'opzione è stata rimossa in Visual Studio 2017 e versioni successive.The option is removed in Visual Studio 2017 and later. È consigliabile convertire in C# il codice che deve essere MSIL pure.We recommend that you port code that must be pure MSIL to C#.

  • safe

    /clr:safe è deprecato./clr:safe is deprecated. L'opzione è stata rimossa in Visual Studio 2017 e versioni successive.The option is removed in Visual Studio 2017 and later. È consigliabile convertire in C# il codice che deve essere safe MSIL.We recommend that you port code that must be safe MSIL to C#.

  • noAssembly

    /clr:noAssembly è deprecato./clr:noAssembly is deprecated. In alternativa, usare /LN (Crea modulo MSIL) .Use /LN (Create MSIL Module) instead.

    Indica al compilatore di non inserire un manifesto dell'assembly nel file di output.Tells the compiler not to insert an assembly manifest into the output file. Per impostazione predefinita, l' noAssembly opzione non è attiva.By default, the noAssembly option isn't in effect.

    Un programma gestito senza metadati dell'assembly nel manifesto è noto come modulo.A managed program that doesn't have assembly metadata in the manifest is known as a module. L' noAssembly opzione può essere usata solo per produrre un modulo.The noAssembly option can be used only to produce a module. Se si compila usando /c e /clr:noAssembly , specificare l' /NOASSEMBLY opzione nella fase del linker per creare un modulo.If you compile by using /c and /clr:noAssembly, then specify the /NOASSEMBLY option in the linker phase to create a module.

    Prima di Visual Studio 2005, /clr:noAssembly obbligatorio /LD .Before Visual Studio 2005, /clr:noAssembly required /LD. /LD è ora implicito quando si specifica /clr:noAssembly ./LD is now implied when you specify /clr:noAssembly.

  • initialAppDomain

    initialAppDomain è obsoleto.initialAppDomain is obsolete. Consente l'esecuzione di un'applicazione C++/CLI sulla versione 1 di CLR.Enables a C++/CLI application to run on version 1 of the CLR. Un'applicazione compilata usando non initialAppDomain deve essere usata da un'applicazione che usa ASP.NET perché non è supportata nella versione 1 di CLR.An application that's compiled by using initialAppDomain shouldn't be used by an application that uses ASP.NET because it's not supported in version 1 of the CLR.

CommentiRemarks

Il codice gestito è un codice che può essere controllato e gestito da CLR.Managed code is code that can be inspected and managed by the CLR. Il codice gestito può accedere agli oggetti gestiti.Managed code can access managed objects. Per ulteriori informazioni, vedere /clr restrizioni.For more information, see /clr Restrictions.

Per informazioni sullo sviluppo di applicazioni che definiscono e utilizzano i tipi gestiti in C++, vedere estensioni componenti per le piattaforme runtime.For information about how to develop applications that define and consume managed types in C++, see Component Extensions for Runtime Platforms.

Un'applicazione compilata utilizzando /clr può contenere o meno dati gestiti.An application compiled by using /clr may or may not contain managed data.

Per abilitare il debug in un'applicazione gestita, vedere /ASSEMBLYDEBUG (aggiungere DebuggableAttribute).To enable debugging on a managed application, see /ASSEMBLYDEBUG (Add DebuggableAttribute).

Viene creata un'istanza solo dei tipi CLR nell'heap sottoposti a Garbage Collection.Only CLR types are instantiated on the garbage-collected heap. Per altre informazioni, vedere Classes and Structs (Classi e struct).For more information, see Classes and Structs. Per compilare un funzione nel codice nativo, usare la direttiva pragma unmanaged .To compile a function to native code, use the unmanaged pragma. Per ulteriori informazioni, vedere managed unmanaged . For more information, see managed, unmanaged.

Per impostazione predefinita, /clr non è attivo.By default, /clr isn't in effect. Quando /clr è attivo, /MD è attivo anche.When /clr is in effect, /MD is also in effect. Per ulteriori informazioni, vedere /MD , /MT , /LD (utilizzare Run-Time libreria).For more information, see /MD, /MT, /LD (Use Run-Time Library). /MD garantisce che le versioni multithreading collegate in modo dinamico delle routine di runtime vengano selezionate dai file di intestazione standard./MD ensures that the dynamically linked, multithreaded versions of the runtime routines are selected from the standard header files. Il multithreading è richiesto per la programmazione gestita perché il Garbage Collector CLR esegue i finalizzatori in un thread ausiliario.Multithreading is required for managed programming because the CLR garbage collector runs finalizers in an auxiliary thread.

Se si esegue la compilazione utilizzando /c , è possibile specificare il tipo CLR del file di output risultante utilizzando l' /CLRIMAGETYPE opzione del linker.If you compile by using /c, you can specify the CLR type of the resulting output file by using the /CLRIMAGETYPE linker option.

/clr implica /EHa e non /EH sono supportate altre opzioni per /clr ./clr implies /EHa, and no other /EH options are supported for /clr. Per ulteriori informazioni, vedere /EH (modello di gestione delle eccezioni).For more information, see /EH (Exception Handling Model).

Per informazioni su come determinare il tipo di immagine CLR di un file, vedere /CLRHEADER .For information about how to determine the CLR image type of a file, see /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 ).All modules passed to a given invocation of the linker must be compiled by using the same run-time library compiler option (/MD or /LD).

Usare l' /ASSEMBLYRESOURCE opzione del linker per incorporare una risorsa in un assembly.Use the /ASSEMBLYRESOURCE linker option to embed a resource in an assembly. /DELAYSIGN/KEYCONTAINERle opzioni, e del /KEYFILE linker consentono inoltre di personalizzare la modalità di creazione di un assembly./DELAYSIGN, /KEYCONTAINER, and /KEYFILE linker options also let you customize how an assembly is created.

Quando /clr si usa, il _MANAGED simbolo viene definito come 1.When /clr is used, the _MANAGED symbol is defined to be 1. Per altre informazioni, vedere macro predefinite.For more information, see Predefined macros.

Le variabili globali in un file oggetto nativo vengono inizializzate per prime (durante DllMain se l'eseguibile è una dll) e quindi vengono inizializzate le variabili globali nella sezione gestita (prima dell'esecuzione di qualsiasi codice gestito).The global variables in a native object file are initialized first (during DllMain if the executable is a DLL), and then the global variables in the managed section are initialized (before any managed code is run). #pragma init_seg influiscono solo sull'ordine di inizializzazione nelle categorie gestite e non gestite.#pragma init_seg only affects the order of initialization in the managed and unmanaged categories.

Metadati e classi senza nomeMetadata and Unnamed Classes

Le classi senza nome vengono visualizzate nei metadati sotto i nomi $UnnamedClass$<crc-of-current-file-name>$<index>$ , ad esempio, dove <index> è un conteggio sequenziale delle classi senza nome nella compilazione.Unnamed classes appear in metadata under names such as $UnnamedClass$<crc-of-current-file-name>$<index>$, where <index> is a sequential count of the unnamed classes in the compilation. Ad esempio, l'esempio di codice seguente genera una classe senza nome nei metadati.For example, the following code sample generates an unnamed class in metadata.

// clr_unnamed_class.cpp
// compile by using: /clr /LD
class {} x;

Usare ildasm.exe per visualizzare i metadati.Use ildasm.exe to view metadata.

Per impostare l'opzione del compilatore nell'ambiente di sviluppo di Visual StudioTo set this compiler option in the Visual Studio development environment

  1. Aprire la finestra di dialogo Pagine delle proprietà del progetto.Open the project's Property Pages dialog box. Per informazioni dettagliate, vedere Impostare il compilatore e le proprietà di compilazione.For details, see Set C++ compiler and build properties in Visual Studio.

  2. Impostare l'elenco a discesa configurazione su tutte le configurazioni e impostare l'elenco a discesa piattaforma su tutte le piattaforme.Set the Configuration dropdown to All configurations, and set the Platform dropdown to All Platforms.

  3. Selezionare la pagina generale di proprietà di configurazione > C/C++ > .Select the Configuration Properties > C/C++ > General page.

  4. Modificare la proprietà supporto Common Language Runtime .Modify the Common Language Runtime Support property. Scegliere OK per salvare le modifiche.Choose OK to save your changes.

Nota

Nell'IDE di Visual Studio, l' /clr opzione del compilatore può essere impostata singolarmente nella pagina proprietà di configurazione > C/C++ > generale della finestra di dialogo Pagine delle proprietà.In the Visual Studio IDE, the /clr compiler option can be individually set on the Configuration Properties > C/C++ > General page of the Property Pages dialog. Tuttavia, è consigliabile utilizzare un modello CLR per creare il progetto.However, we recommend you use a CLR template to create your project. Imposta tutte le proprietà necessarie per la corretta creazione di un componente CLR.It sets all of the properties required for successful creation of a CLR component. Un altro modo per impostare queste proprietà consiste nell'utilizzare la proprietà supporto Common Language Runtime nella > pagina Avanzate proprietà di configurazione della finestra di dialogo Pagine delle proprietà.Another way to set these properties is to use the Common Language Runtime Support property on the Configuration Properties > Advanced page of the Property Pages dialog. Questa proprietà imposta tutte le altre opzioni dello strumento correlate a CLR in una sola volta.This property sets all the other CLR-related tool options at once.

Per impostare l'opzione del compilatore a livello di codiceTo set this compiler option programmatically

Vedi ancheSee also

Opzioni del compilatore MSVCMSVC Compiler Options
Sintassi Command-Line del compilatore MSVCMSVC Compiler Command-Line Syntax