Importar una biblioteca de tipos como un ensamblado

Normalmente, las definiciones de tipos COM residen en una biblioteca de tipos. Por otro lado, los compiladores conformes a CLS producen metadatos de tipos en un ensamblado. Los dos orígenes de información de tipos son muy diferentes. En este tema se describen las técnicas para generar metadatos a partir de una biblioteca de tipos. El ensamblado resultante se denomina ensamblado de interoperabilidad y la información de tipos que contiene permite a las aplicaciones de .NET Framework utilizar tipos COM.

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

  • Usando ensamblados de interoperabilidad de tiempo de diseño únicamente: a partir de .NET Framework versión 4, puede indicar al compilador que incruste información de tipo del ensamblado de interoperabilidad de una aplicación ejecutable. El compilador incrusta solo la información de tipo que la aplicación utiliza. No es necesario implementar el ensamblado de interoperabilidad con la aplicación. Esta es la técnica recomendada.

  • Implementando ensamblados de interoperabilidad: puede crear una referencia estándar al ensamblado de interoperabilidad. En este caso, el ensamblado de interoperabilidad se debe implementar con la aplicación. Si utiliza esta técnica y no usa ningún componente COM privado, haga siempre referencia al ensamblado de interoperabilidad primario (PIA) publicado por el autor del componente COM que prevé incorporar en el código administrado. Para obtener más información sobre la creación y el uso de ensamblados de interoperabilidad primarios, vea Ensamblados de interoperabilidad primarios.

Al utilizar ensamblados de interoperabilidad de tiempo de diseño, puede incrustar 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 primario con la aplicación.

Al utilizar ensamblados de interoperabilidad de tiempo de diseño, se reduce el tamaño de la aplicación, porque la mayoría de las aplicaciones no utilizan todas las características de un componente COM. El compilador es muy eficaz cuando incrusta información de tipos; si la aplicación solo utiliza algunos de los métodos de una interfaz COM, el compilador no incrusta los métodos no usados. Cuando una aplicación que ha incrustado información de tipos interactúa con otra aplicación, o interactúa con una aplicación que utiliza un ensamblado de interoperabilidad primario, Common Language Runtime utiliza las reglas de equivalencia de tipos para determinar si dos tipos con el mismo nombre representan el mismo tipo COM. No es preciso conocerlas para utilizar objetos COM. Ahora bien, si le interesan las reglas, vea Equivalencia de tipos y tipos de interoperabilidad incrustados.

Generar metadatos

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

Una vez que se localice la biblioteca de tipos que contiene la implementación del tipo COM de destino, puede elegir una de las siguientes opciones para generar un ensamblado que contenga metadatos de tipos.

  • 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 y Tutorial: Incrustar información de tipos de los ensamblados de Microsoft Office (C# y Visual Basic).

  • 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 del archivo de ensamblado resultante, importa tipos de una biblioteca de tipos existente y genera un ensamblado 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 los métodos para convertir coclases e interfaces de una biblioteca de tipos en metadatos de un ensamblado. Genera los mismos metadatos que Tlbimp.exe. Sin embargo, a diferencia de Tlbimp.exe, la clase TypeLibConverter puede convertir una biblioteca de tipos en memoria en metadatos.

  • Contenedores personalizados

    Si una biblioteca de tipos no está disponible o no es válida, tiene la opción de crear una definición duplicada de la clase o interfaz en código fuente administrado. A continuación, puede compilar el código fuente con un compilador orientado a Common Language Runtime para generar metadatos en un ensamblado.

    Para definir tipos COM manualmente, necesita los siguientes elementos:

    • Descripciones precisas de las coclases e interfaces que se van a definir.

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

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

    Escribir un contenedor personalizado es una técnica avanzada. Para obtener más información acerca de la forma de generar un contenedor personalizado, vea Personalizar contenedores estándar.

Para obtener información detallada sobre el proceso de importación de interoperabilidad COM, vea Resumen de la conversión de bibliotecas de tipos en ensamblados.

Vea también

Tareas

Cómo: Agregar referencias a bibliotecas de tipos

Cómo: Generar ensamblados de interoperabilidad a partir de bibliotecas de tipos

Referencia

TlbImp.exe (Importador de la biblioteca de tipos)

TypeLibConverter

Conceptos

Exponer componentes COM en .NET Framework

Personalizar contenedores estándar

Utilizar tipos COM en código administrado

Compilar un proyecto de interoperabilidad

Implementar una aplicación interoperativa

Otros recursos

Resumen de la conversión de bibliotecas de tipos en ensamblados

Tutorial: Incrustar información de tipos de los ensamblados de Microsoft Office (C# y Visual Basic)