Compartir a través de


Información general sobre interoperabilidad (Guía de programación de C#)

Actualización: Julio de 2008

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 onda (Guía de programación de C#).

Nota:

Common Language Runtime (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 .NET Framework Security.

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.

Para obtener más información, vea Cómo: Envolver una clase nativa para utilizarla en C# y Utilizar la interoperabilidad de C++ (PInvoke implícito).

Exponer componentes COM a C#

Puede usar un componente COM de un proyecto de C#. A continuación se enumeran los pasos generales:

  1. Busque un componente COM que desee usar y regístrelo. Use regsvr32.exe para registrar o anular el registro de un archivo DLL COM.

  2. Agregue al proyecto una referencia a la biblioteca de tipos o el componente COM.

    Al agregar la referencia, Visual Studio usa el Importador de la biblioteca de tipos (TlbImp.exe), que acepta una biblioteca de tipos como entrada, para generar un ensamblado de interoperabilidad de .NET Framework. El ensamblado, también denominado contenedor RCW, 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 al ensamblado generado.

  3. Cree una instancia de una clase definida en RCW. Esto, a su vez, crea una instancia del objeto COM.

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

  1. 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).

  2. Generar una biblioteca de tipos COM y registrarla para el uso de COM.

    Puede modificar las propiedades del proyecto de Visual C# a fin de registrar automáticamente el ensamblado de C# para la interoperabilidad COM. Visual Studio usa la Herramienta Registro de ensamblados (Regasm.exe), con el modificador de línea de comandos /tlb, que acepta 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 Cómo: Registrar un componente para interoperabilidad COM.

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

Guía de programación de C#

Otros recursos

Interoperar con código no administrado

Interoperabilidad COM avanzada

Interoperabilidad en .NET Compact Framework

Improving Interop Performance

Introducción a la interoperabilidad COM

Cálculo de referencias entre código administrado y no administrado

Historial de cambios

Fecha

Historial

Motivo

Julio de 2008

Actualización de la documentación para cubrir más tipos de interoperabilidad.

Mejora de la información.