Información general sobre interoperabilidad (Guía de programación de C#)
En este tema se describen métodos para habilitar la interoperabilidad entre el código administrado y no administrado de C#.
Invocación de plataforma
La invocación de plataforma es un servicio que habilita el código administrado para llamar a funciones no administradas implementadas en bibliotecas de vínculos dinámicos (DLL), como las que se encuentran en la API de Microsoft Win32. Localiza e invoca una función exportada y calcula las referencias a sus argumentos (enteros, cadenas, matrices, estructuras, etc.) dentro de los límites de la interoperabilidad, según sea necesario.
Para obtener más información, vea Consumir funciones DLL no administradas y Cómo: Utilizar la invocación de plataforma para reproducir un archivo de sonido (Guía de programación de C#).
![]() |
---|
Common Language Runtime (CLR) (CLR) administra el acceso a los recursos del sistema.Llamar a código no administrado que se encuentra fuera de CLR omite este mecanismo de seguridad y, por consiguiente, presenta un riesgo de seguridad.Por ejemplo, un código no administrado podría llamar directamente a recursos en código no administrado, lo que omitiría los mecanismos de seguridad de CLR.Para obtener más información, vea Seguridad de .NET Framework. |
Interoperabilidad de C++
Puede utilizar la interoperabilidad de C++, también conocida como IJW (It Just Works), para encapsular una clase de C++ nativa de forma que la pueda utilizar el código creado en C# u otro lenguaje de .NET Framework. Para ello, escriba código de C++ que encapsule un componente DLL o COM nativo. A diferencia de otros lenguajes de .NET Framework, Visual C++ cuenta con compatibilidad de interoperabilidad, que permite que haya código administrado y no administrado en la misma aplicación, e incluso en el mismo archivo. A continuación, se genera el código de C++ utilizando el modificador del compilador /clr para generar un ensamblado administrado. Por último, se agrega una referencia al ensamblado en el proyecto de C# y se usan los objetos encapsulados de la misma forma que se utilizan otras clases administradas.
Exponer componentes COM a C#
Puede usar un componente COM de un proyecto de C#. A continuación se enumeran los pasos generales:
Busque un componente COM que desee usar y regístrelo. Use regsvr32.exe para registrar o anular el registro de un archivo DLL COM.
Agregue al proyecto una referencia a la biblioteca de tipos o el componente COM.
Al agregar la referencia, Visual Studio usa el TlbImp.exe (Importador de la biblioteca de tipos), que acepta una biblioteca de tipos como entrada, para generar un ensamblado de interoperabilidad de .NET Framework. El ensamblado, también denominado contenedor RCW (Runtime Callable Wrapper), contiene clases e interfaces administradas que encapsulan las clases e interfaces COM que se encuentran en la biblioteca de tipos. Visual Studio agrega al proyecto una referencia para el ensamblado generado.
Cree una instancia de una clase definida en RCW. Esto, a su vez, crea una instancia del objeto COM.
Use el objeto de la misma forma que utiliza otros objetos administrados. Cuando la recolección de elementos no utilizados reclama el objeto, la instancia del objeto COM también se libera de la memoria.
Para obtener más información, vea Exponer componentes COM en .NET Framework.
Exponer C# a COM
Los clientes COM pueden usar tipos C# que se hayan expuesto correctamente. A continuación se muestran los pasos básicos para exponer tipos C#:
Agregar atributos de interoperabilidad al proyecto de C#.
Puede hacer que un ensamblado sea visible a través de COM; para ello, modifique las propiedades del proyecto de Visual C#. Para obtener más información, vea Información de ensamblado (Cuadro de diálogo).
Generar una biblioteca de tipos COM y registrarla para el uso de COM.
Puede modificar las propiedades del proyecto Visual C# para registrar automáticamente el ensamblado de C# para interoperabilidad COM. Visual Studio usa Regasm.exe (Herramienta de registro de ensamblados), mediante el modificador de la línea de comandos /tlb, que toma un ensamblado administrado como entrada, para generar una biblioteca de tipos. Esta biblioteca de tipos describe los tipos public del ensamblado y agrega entradas del Registro para que los clientes COM puedan crear clases administradas.
Para obtener más información, vea Exponer componentes de .NET Framework en COM y Clases COM de ejemplo (Guía de programación de C#).
Vea también
Conceptos
Otros recursos
Mejora de rendimiento de Interoperabilidad
introducción a la interoperabilidad COM
Cálculo de referencias entre código administrado y no administrado