/clr (Compilación de Common Language Runtime)

Permite que las aplicaciones y los componentes usen características de Common Language Runtime (CLR) y habilita la compilación de C++/CLI.

Sintaxis

/clr[:opciones]

Argumentos

options
Uno o varios de los siguientes argumentos separados por comas.

  • ninguno

    Sin opciones, crea /clr metadatos para el componente. Otras aplicaciones CLR pueden consumir los metadatos y permite que el componente consuma tipos y datos en los metadatos de otros componentes CLR. Para más información, vea Ensamblados mixtos (nativos y administrados).

  • netcore

    Disponible a partir Visual Studio versión 16.4 de 2019, /clr:netcore crea metadatos y código para el componente mediante la versión más reciente de .NET Framework multiplataforma, también conocida como .NET Core. Otras aplicaciones de .NET Core pueden consumir los metadatos. Además, la opción permite que el componente consuma tipos y datos en los metadatos de otros componentes de .NET Core.

  • nostdlib

    Indica al compilador que ignore el directorio \clr predeterminado. El compilador genera errores si incluye varias versiones de un archivo DLL, como System.dll. Esta opción le permite especificar el marco específico que se usará durante la compilación.

  • pure

    /clr:pure está en desuso. Esta opción se ha quitado de Visual Studio 2017 y versiones posteriores. Se recomienda trasladar el código que deba ser MSIL puro a C#.

  • safe

    /clr:safe está en desuso. Esta opción se ha quitado de Visual Studio 2017 y versiones posteriores. Se recomienda trasladar a C# el código de puerto que deba ser seguro para MSIL.

  • noAssembly

    /clr:noAssembly está en desuso. Use /LN (Crear módulo MSIL) en su lugar.

    Indica al compilador que no inserte un manifiesto de ensamblado en el archivo de salida. De forma predeterminada, noAssembly la opción no está en vigor.

    Un programa administrado que no tiene metadatos de ensamblado en el manifiesto se conoce como módulo. La noAssembly opción solo se puede usar para generar un módulo. Si compila mediante y , especifique /c/clr:noAssemblyla opción /NOASSEMBLY en la fase del vinculador para crear un módulo.

    Antes Visual Studio 2005, se /clr:noAssembly requería /LD. /LD ahora está implícito cuando se especifica /clr:noAssembly.

  • initialAppDomain

    initialAppDomain está obsoleto. Permite que una aplicación de C++/CLI se ejecute en la versión 1 de CLR. Una aplicación que initialAppDomain se compila mediante no debe usarse en una aplicación que use ASP.NET porque no se admite en la versión 1 de CLR.

Observaciones

El código administrado es código que CLR puede inspeccionar y administrar. El código administrado puede tener acceso a los objetos administrados. Para obtener más información, vea /clr Restricciones.

Para obtener información sobre cómo desarrollar aplicaciones que definen y consumen tipos administrados en C++, vea Extensiones de componentes para plataformas en tiempo de ejecución.

Una aplicación compilada mediante puede /clr o no contener datos administrados.

Para habilitar la depuración en una aplicación administrada, vea /ASSEMBLYDEBUG (Agregar DebuggableAttribute).

Solo se crea una instancia de los tipos CLR en el montón de recolección de elementos no utilizados. Para más información, vea ref class and ref struct (C++/CLI and C++/CX) [ref class y ref struct (C++/CLI y C++/CX)]. Para compilar una función en código nativo, use la pragma unmanaged . Para obtener más información, veamanaged , unmanaged.

De forma predeterminada, /clr no está en vigor. Cuando /clr está en vigor, /MD también está en vigor. Para obtener más información, /MDvea , /MT, /LD (Use Run-Time Library). /MD garantiza que las versiones multiproceso vinculadas dinámicamente de las rutinas en tiempo de ejecución se seleccionan de los archivos de encabezado estándar. El subprocesamiento múltiple es necesario para la programación administrada porque el recolector de elementos no utilizados de CLR ejecuta los finalizadores en un subproceso auxiliar.

Si compila mediante , puede /cespecificar el tipo CLR del archivo de salida resultante mediante la opción /CLRIMAGETYPE del vinculador.

/clr implica /EHa, y no se admite /EH ninguna otra opción para /clr. Para obtener más información, vea /EH (Modelo de control de excepciones).

Para obtener información sobre cómo determinar el tipo de imagen CLR de un archivo, vea /CLRHEADER.

Todos los módulos pasados a una invocación determinada del vinculador deben compilarse con la misma opción del compilador de biblioteca en tiempo de ejecución (/MD o /LD).

Use la opción /ASSEMBLYRESOURCE del vinculador para insertar un recurso en un ensamblado. /DELAYSIGNLas /KEYCONTAINERopciones , y /KEYFILE del vinculador también permiten personalizar cómo se crea un ensamblado.

Cuando /clr se usa , el _MANAGED símbolo se define como 1. Para obtener más información, vea Macros predefinidas.

Las variables globales de un archivo de objeto nativo se inicializan primero ( DllMain durante si el archivo ejecutable es un archivo DLL) y, a continuación, se inicializan las variables globales de la sección administrada (antes de ejecutar cualquier código administrado). #pragma init_seg solo afecta al orden de inicialización en las categorías administradas y no administradas.

Metadatos y clases sin nombre

Las clases sin nombre aparecen en los $UnnamedClass$<crc-of-current-file-name>$<index>$metadatos con nombres como , <index> donde es un recuento secuencial de las clases sin nombre de la compilación. Por ejemplo, el siguiente ejemplo de código genera una clase sin nombre en los metadatos.

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

Use ildasm.exe para ver los metadatos.

Para establecer esta opción del compilador en el entorno de desarrollo de Visual Studio

  1. Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para más información, vea Establecimiento del compilador de C++ y de propiedades de compilación en Visual Studio.

  2. Establezca la lista desplegable Configuración en Todas las configuraciones y establezca la lista desplegable Plataforma en Todas las plataformas.

  3. Seleccione la página Propiedades de configuraciónC>/C++>General .

  4. Modifique la propiedad Compatibilidad con Common Language Runtime . Elija Aceptar para guardar los cambios.

Nota:

En el IDE Visual Studio, la /clr> opción del compilador se puede establecer individualmente en la página Propiedades de configuraciónC/C++>General del cuadro de diálogo Páginas de propiedades. Sin embargo, se recomienda usar una plantilla CLR para crear el proyecto. Establece todas las propiedades necesarias para la creación correcta de un componente CLR. Otra manera de establecer estas propiedades es usar la propiedad Compatibilidad con Common Language Runtime> en la página Propiedades de configuraciónVanado del cuadro de diálogo Páginas de propiedades. Esta propiedad establece todas las demás opciones de herramientas relacionadas con CLR a la vez.

Para establecer esta opción del compilador mediante programación

Consulte también

Opciones del compilador de MSVC
Sintaxis de la línea de comandos del compilador MSVC