Cómo registrar ensamblados de interoperabilidad principales

Note

Esta guía es específica de .NET Framework. Para la interoperabilidad COM moderna de .NET, use la interoperabilidad COM generada por código fuente o la API System.Runtime.InteropServices.ComWrappers. Para obtener más información, consulte Introducción a la interoperabilidad COM y generación de orígenes COM.

Las clases solo se pueden serializar por interoperabilidad COM y siempre se serializan como interfaces. En algunos casos, la interfaz usada para calcular las referencias de la clase se conoce como interfaz de clase. Para obtener información sobre cómo reemplazar la interfaz de la clase por una interfaz que elija, consulte COM Callable Wrapper.

Aunque cualquier desarrollador que quiera usar tipos COM en una aplicación .NET Framework puede generar un ensamblado de interoperabilidad, hacerlo supone un problema. Cada vez que un desarrollador importa y firma una biblioteca de tipos COM, crea un conjunto de tipos únicos que son incompatibles con los que importe y firme otro programador. La solución a este problema de incompatibilidad de tipos es que cada desarrollador obtenga el ensamblado de interoperabilidad principal firmado y suministrado por el proveedor.

Si tiene previsto exponer tipos COM de terceros en otras aplicaciones, use siempre el ensamblado de interoperabilidad primario proporcionado por el mismo editor que la biblioteca de tipos que define. Además de garantizar la compatibilidad de tipos, los ensamblados de interoperabilidad primarios suelen estar personalizados por el proveedor para mejorar la interoperabilidad.

Aunque no tenga pensado exponer tipos COM de terceros, el uso de ensamblados de interoperabilidad primarios puede facilitar la tarea de interoperar con componentes COM. Sin embargo, esta estrategia no ofrece protección frente a los cambios que un proveedor pudiera realizar en los tipos definidos en un ensamblado principal de interoperabilidad. Cuando la aplicación requiera dicho aislamiento, genere su propio ensamblado de interoperabilidad en lugar de usar el ensamblado de interoperabilidad primario.

Debe registrar todos los ensamblados de interoperabilidad primarios obtenidos en su equipo de desarrollo antes de poder referenciarlos en Visual Studio. Visual Studio busca y usa un ensamblado de interoperabilidad primario la primera vez que haga referencia a un tipo de una biblioteca de tipos COM. Si Visual Studio no encuentra el ensamblado de interoperabilidad primario asociado a la biblioteca de tipos, le pide que lo adquiera o le ofrece la posibilidad de crear un ensamblado de interoperabilidad en su lugar. Del mismo modo, el Importador de la biblioteca de tipos (Tlbimp.exe) usa también el registro para buscar ensamblados de interoperabilidad primarios.

Aunque no es necesario registrar los ensamblados de interoperabilidad primarios a menos que tenga pensado usar Visual Studio, registrarlos ofrece dos ventajas:

  • Un ensamblado de interoperabilidad primario registrado está marcado claramente bajo la clave del Registro de la biblioteca de tipos original. Registrarlo es la mejor manera de encontrar un ensamblado de interoperabilidad primario en el equipo.
  • Puede evitar generar y usar accidentalmente un nuevo ensamblado de interoperabilidad si, en algún momento futuro, usa Visual Studio para hacer referencia a un tipo cuyo ensamblado primario de interoperabilidad no está registrado.

Use la herramienta Registro de ensamblados (Regasm.exe) para registrar un ensamblado de interoperabilidad primario.

Registro de un ensamblado de interoperabilidad principal

Para registrar un ensamblado de interoperabilidad principal, en la línea de comandos, escribe:

regasm <assemblyname>

En este comando, nombre_de_ensamblado es el nombre de archivo del ensamblado que se va a registrar. Regasm.exe agrega una entrada para el ensamblado de interoperabilidad primario bajo la misma clave del Registro que la biblioteca de tipos original.

Ejemplo

En el ejemplo siguiente se registra el ensamblado de interoperabilidad primario CompanyA.UtilLib.dll.

regasm CompanyA.UtilLib.dll

Vea también