Compartir por


Importación de una biblioteca de tipos como ensamblado

Normalmente, las definiciones de tipo COM residen en una biblioteca de tipos. En cambio, los compiladores compatibles con CLS generan metadatos de tipo en un ensamblado. Las dos fuentes de información de tipos son muy diferentes. En este tema se describen técnicas para generar metadatos desde una biblioteca de tipos. El ensamblado resultante se denomina ensamblado de interoperabilidad y la información de tipo que contiene permite que las aplicaciones de .NET Framework usen tipos COM.

Hay dos maneras de hacer que esta información de tipo esté disponible para la aplicación:

  • Mediante ensamblados de interoperabilidad solo de tiempo de diseño: A partir de .NET Framework 4, se puede indicar al compilador que inserte información de tipos del ensamblado de interoperabilidad en el archivo ejecutable. El compilador inserta solo la información de tipo que usa la aplicación. No es necesario implementar el ensamblado de interoperabilidad con la aplicación. Esta es la técnica recomendada.

  • Implementación de ensamblados de interoperabilidad: puede crear una referencia estándar al ensamblado de interoperabilidad. En este caso, el ensamblado de interoperabilidad debe implementarse con la aplicación. Si emplea esta técnica y no usa un componente COM privado, haga referencia siempre al ensamblado de interoperabilidad primario (PIA) publicado por el autor del componente COM que pretende incorporar en el código administrado. Para obtener más información sobre cómo generar y usar ensamblados de interoperabilidad primarios, vea Ensamblados de interoperabilidad primarios.

Al usar ensamblados de interoperabilidad solo de tiempo de diseño, se puede insertar información de tipos del ensamblado de interoperabilidad primario publicado por el autor del componente COM. Sin embargo, no es necesario implementar el ensamblado de interoperabilidad principal con la aplicación.

El uso de ensamblados de interoperabilidad solo en tiempo de diseño reduce el tamaño de la aplicación, ya que la mayoría de las aplicaciones no usan todas las características de un componente COM. El compilador es muy eficaz cuando inserta información de tipo; Si la aplicación usa solo algunos de los métodos en una interfaz COM, el compilador no inserta los métodos no utilizados. Cuando una aplicación que tiene información de tipo incrustada interactúa con otra aplicación de este tipo o interactúa con una aplicación que usa un ensamblado de interoperabilidad principal, Common Language Runtime usa reglas de equivalencia de tipos para determinar si dos tipos con el mismo nombre representan el mismo tipo COM. No es necesario conocer estas reglas para usar objetos COM. Si está interesado en las reglas, vea Equivalencia de tipos y tipos de interoperabilidad incrustados.

Generación de metadatos

Las bibliotecas de tipos COM pueden ser archivos independientes que tienen una extensión .tlb, como Loanlib.tlb. Algunas bibliotecas de tipos se incrustan en la sección de recursos de un archivo .dll o .exe. Otros orígenes de información de la biblioteca de tipos son archivos .olb y .ocx.

Después de localizar la biblioteca de tipos que contiene la implementación del tipo COM de destino, tiene las siguientes opciones para generar un ensamblado de interoperabilidad que contenga metadatos de tipo:

  • Visual Studio

    Visual Studio convierte automáticamente los tipos COM de una biblioteca de tipos en metadatos de un ensamblado. Para obtener instrucciones, vea Cómo: Agregar referencias a bibliotecas de tipos.

  • Importador de la biblioteca de tipos (Tlbimp.exe)

    El importador de la biblioteca de tipos proporciona opciones de línea de comandos para ajustar los metadatos en el archivo de interoperabilidad resultante, importa los tipos de una biblioteca de tipos existente y genera un ensamblado de interoperabilidad y un espacio de nombres. Para obtener instrucciones, vea Cómo: Generar ensamblados de interoperabilidad a partir de bibliotecas de tipos.

  • clase System.Runtime.InteropServices.TypeLibConverter

    Esta clase proporciona métodos para convertir las coclases e interfaces de una biblioteca de tipos en metadatos dentro de un ensamblado. Genera la misma salida de metadatos que Tlbimp.exe. Sin embargo, a diferencia de Tlbimp.exe, la TypeLibConverter clase puede convertir una biblioteca de tipos en memoria en metadatos.

  • Envolturas personalizadas

    Cuando una biblioteca de tipos no está disponible o es incorrecta, una opción es crear una definición duplicada de la clase o interfaz en el código fuente administrado. A continuación, compile el código fuente con un compilador que tenga como destino el entorno de ejecución para generar metadatos en un ensamblado.

    Para definir los tipos COM manualmente, debe tener acceso a los siguientes elementos:

    • Descripciones precisas de las coclases e interfaces que se definen.

    • Un compilador, como el compilador de C#, que puede generar las definiciones de clase de .NET Framework adecuadas.

    • Conocimiento de las reglas de conversión de bibliotecas de tipos a ensamblados.

    Escribir un envoltorio personalizado es una técnica avanzada. Para obtener más información sobre cómo generar un contenedor personalizado, consulte Personalización de contenedores estándar.

Para obtener más información sobre el proceso de importación de COM Interop, consulte el documento titulado Resumen de Conversión de Biblioteca de Tipos a Ensamblado.

Consulte también