/clr (Compilation pour le Common Language Runtime)/clr (Common Language Runtime Compilation)

Permet aux applications et aux composants d’utiliser les fonctionnalités du Common Language Runtime (CLR).Enables applications and components to use features from the common language runtime (CLR).

SyntaxeSyntax

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

ArgumentsArguments

optionsoptions
Un ou plusieurs des commutateurs suivants, séparés par des virgules.One or more of the following switches, comma-separated.

  • nonenone

    Sans option, /clr crée des métadonnées pour l’application.With no options, /clr creates metadata for the application. Ces métadonnées peuvent être utilisées par d'autres applications CLR et permettent à votre application d'utiliser les types et données des métadonnées appartenant à d'autres composants CLR.The metadata can be consumed by other CLR applications, and enables the application to consume types and data in the metadata of other CLR components. Pour plus d’informations, consultez Assemblys mixtes (natif et managé).For more information, see Mixed (Native and Managed) Assemblies.

  • purepure

    /clr:pure est déprécié./clr:pure is deprecated. L’option est supprimée dans Visual Studio 2017 et ultérieur.The option is removed in Visual Studio 2017 and later. Nous vous recommandons de porter vers C# du code devant être écrit en MSIL pur.We recommend that you port code that must be pure MSIL to C#.

  • safesafe

    /clr:safe est déprécié./clr:safe is deprecated. L’option est supprimée dans Visual Studio 2017 et ultérieur.The option is removed in Visual Studio 2017 and later. Nous vous recommandons de porter sur C# du code devant être écrit en MSIL sécurisé.We recommend that you port code that must be safe MSIL to C#.

  • noAssemblynoAssembly

    /clr:noAssembly est déprécié./clr:noAssembly is deprecated. Utilisez plutôt /LN (Create MSIL Module) .Use /LN (Create MSIL Module) instead.

    Indique qu'un manifeste d'assembly ne doit pas être inséré dans le fichier de sortie.Specifies that an assembly manifest should not be inserted into the output file. Par défaut, l’option noAssembly n’est pas activée.By default, the noAssembly option is not in effect.

    Un programme managé qui ne possède pas de métadonnées d'assembly dans le manifeste est appelé module.A managed program that does not have assembly metadata in the manifest is known as a module. L’option noAssembly peut être utilisée uniquement pour produire un module.The noAssembly option can be used only to produce a module. Si vous compilez en utilisant /c et /clr:noAssembly, spécifiez l’option /NOASSEMBLY dans la phase de l’éditeur de liens pour créer un module.If you compile by using /c and /clr:noAssembly, then specify the /NOASSEMBLY option in the linker phase to create a module.

    Avant Visual Studio 2005, /clr:noAssembly nécessitait l’option /LD.Before Visual Studio 2005, /clr:noAssembly required /LD. /LD est désormais implicite quand vous spécifiez /clr:noAssembly./LD is now implied when you specify /clr:noAssembly.

  • initialAppDomaininitialAppDomain

    Permet à une application Visual C++ de s’exécuter sur la version 1 du CLR.Enables a Visual C++ application to run on version 1 of the CLR. Une application compilée en utilisant initialAppDomain ne doit pas être utilisée par une application qui utilise ASP.NET car elle n’est pas prise en charge dans la version 1 du CLR.An application that is compiled by using initialAppDomain should not be used by an application that uses ASP.NET because it is not supported in version 1 of the CLR.

  • nostdlibnostdlib

    Indique au compilateur d'ignorer le répertoire \clr par défaut.Instructs the compiler to ignore the default \clr directory. Le compilateur produit des erreurs si vous incluez plusieurs versions d'une DLL telle que System.dll.The compiler produces errors if you are including multiple versions of a DLL such as System.dll. Cette option vous permet de spécifier l'infrastructure spécifique à utiliser pendant la compilation.Using this option lets you specify the specific framework to use during compilation.

RemarquesRemarks

Le code managé est du code qui peut être inspecté et géré par le CLR.Managed code is code that can be inspected and managed by the CLR. Le code managé peut accéder aux objets managés.Managed code can access managed objects. Pour plus d'informations, consultez /clr Restrictions.For more information, see /clr Restrictions.

Pour plus d’informations sur la façon de développer des applications qui définissent et utilisent des types managés, consultez Component Extensions for Runtime Platforms.For information about how to develop applications that define and consume managed types, see Component Extensions for Runtime Platforms.

Une application compilée en utilisant /clr peut contenir ou non des données managées.An application compiled by using /clr may or may not contain managed data.

Pour activer le débogage sur une application managée, consultez /ASSEMBLYDEBUG (Ajouter DebuggableAttribute).To enable debugging on a managed application, see /ASSEMBLYDEBUG (Add DebuggableAttribute).

Seuls les types CLR seront instanciés sur le tas récupéré par le garbage collector.Only CLR types will be instantiated on the garbage-collected heap. Pour plus d’informations, consultez Classes et structs.For more information, see Classes and Structs. Pour compiler une fonction en code natif, utilisez le pragma unmanaged .To compile a function to native code, use the unmanaged pragma. Pour plus d’informations, consultez managé, non managé.For more information, see managed, unmanaged.

Par défaut, l’option /clr n’est pas activée.By default, /clr is not in effect. Quand l’option /clr est activée, /MD l’est également.When /clr is in effect, /MD is also in effect. Pour plus d’informations, consultez l’article /MD, /MT, /LD (Utiliser la bibliothèque Runtime).For more information, see /MD, /MT, /LD (Use Run-Time Library). /MD garantit que les versions multithreads dynamiquement liées des routines d’exécution sont sélectionnées à partir des fichiers d’en-tête standard (.h)./MD ensures that the dynamically linked, multithreaded versions of the runtime routines are selected from the standard header (.h) files. Le multithreading est requis pour la programmation managée, car le garbage collector CLR exécute les finaliseurs dans un thread auxiliaire.Multithreading is required for managed programming because the CLR garbage collector runs finalizers in an auxiliary thread.

Si vous effectuez la compilation en utilisant /c, vous pouvez spécifier le type CLR du fichier de sortie résultant avec /CLRIMAGETYPE.If you compile by using /c, you can specify the CLR type of the resulting output file with /CLRIMAGETYPE.

/clr implique /EHaet aucune autre option /EH n’est prise en charge pour /clr./clr implies /EHa, and no other /EH options are supported for /clr. Pour plus d’informations, consultez l’article /EH (Modèle de gestion des exceptions).For more information, see /EH (Exception Handling Model).

Pour plus d’informations sur la façon de déterminer le type d’image CLR d’un fichier, consultez /CLRHEADER.For information about how to determine the CLR image type of a file, see /CLRHEADER.

Tous les modules passés à un appel donné de l’éditeur de liens doivent être compilés avec la même option du compilateur de la bibliothèque Runtime ( /MD ou /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).

Utilisez l'option de l'éditeur de liens /ASSEMBLYRESOURCE pour incorporer une ressource dans un assembly.Use the /ASSEMBLYRESOURCE linker option to embed a resource in an assembly. Les options/DELAYSIGN, /KEYCONTAINERet /KEYFILE de l'éditeur de liens vous permettent également de personnaliser la façon dont un assembly est créé./DELAYSIGN, /KEYCONTAINER, and /KEYFILE linker options also let you customize how an assembly is created.

Quand l’option /clr est utilisée, le symbole _MANAGED est défini à 1.When /clr is used, the _MANAGED symbol is defined to be 1. Pour plus d'informations, consultez Predefined Macros.For more information, see Predefined Macros.

Les variables globales dans un fichier objet natif sont initialisées en premier (pendant DllMain si le fichier exécutable est une DLL), puis les variables globales figurant dans la section managée sont initialisées (avant l'exécution de tout code managé).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 affecte uniquement l’ordre d’initialisation dans les catégories managées et non managées.#pragma init_seg only affects the order of initialization in the managed and unmanaged categories.

Métadonnées et classes sans nomMetadata and Unnamed Classes

Les classes sans nom apparaîtront dans les métadonnées nommées comme suit : $UnnamedClass$crc-nom-fichier-actuel$index$, où index est un compteur séquentiel des classes sans nom dans la compilation.Unnamed classes will appear in metadata named as follows: $UnnamedClass$crc-of-current-file-name$index$, where index is a sequential count of the unnamed classes in the compilation. Ainsi, l'exemple de code suivant génère une classe sans nom dans les métadonnées.For example, the following code sample generates an unnamed class in metadata.

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

Utilisez ildasm.exe pour afficher les métadonnées.Use ildasm.exe to view metadata.

Voir aussiSee also

Options du compilateur MSVCMSVC Compiler Options
Syntaxe de la ligne de commande du compilateur MSVCMSVC Compiler Command-Line Syntax