Conversión de ensamblados exportados

Toda herramienta o API que exporte un ensamblado a una biblioteca de tipos debe convertir primeramente el nivel más externo de un ensamblado administrado. El proceso convierte cada uno de los ensamblados en una única biblioteca de tipos e impone asignaciones uno a uno entre el ensamblado y la biblioteca. Un ensamblado no se puede dividir en varias bibliotecas de tipos. Un ensamblado produce siempre la misma biblioteca de tipos, independientemente de los detalles o el método de conversión.

Identidades de ensamblados y bibliotecas de tipos

Una identidad de ensamblado está formada por los cuatro elementos de la tabla siguiente.

Elemento

Descripción

Nombre

Cadena usada para identificar el ensamblado. Normalmente, esta cadena es el nombre de archivo del ensamblado sin la extensión de archivo.

Clave pública

Parte pública de un par de claves criptográficas pública y privada.

Versión

Cadena numérica de cuatro partes formada por los números principal, secundario, de versión de compilación y de revisión.

Cadena de referencia cultural

Configuración regional que admite el ensamblado.

La combinación de estos campos produce un nombre seguro para identificar un ensamblado.

Manifiesto de ensamblado parcial

.assembly Sample as "Sample"
{
    publickey = (00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00   
                 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00   
                 B7 3C 60 FD 2D 6B E4 14 4E BD D1 B6 1A 09 FB F1   
                 23 FF A8 62 59 B3 86 0B 0A 73 10 98 51 E5 0E D6   
                 7E 10 2F A7 6E AF 1B E5 E8 F1 2E E6 9C F7 74 9A   
                 1A 9A 83 88 2C 70 C9 8B 52 AD 97 5C 23 52 D2 42   
                 D2 6C 64 14 E7 1D 1D 55 B4 F4 9C BB 86 7B 07 99   
                 E3 19 E8 E1 4A BC 7A 40 A6 A2 9D AD 96 9B E5 CA   
                 7C 10 5B 79 16 80 29 50 CD C3 63 D0 12 81 D0 18   
                 B4 AE DA EC CC ED 8E AF A4 08 14 05 C6 9C 7B C5)
  .ver 1:0:295:37445
  .locale = (65 00 6E 00 2D 00 55 00 53 00 00 00 )   // en-US
}

Por otro lado, la identidad de una biblioteca de tipos está formada por tres elementos, a saber, un identificador de biblioteca de tipos (LIBID), la versión y un identificador regional (LCID). Ni el nombre del archivo que contiene la información de tipos ni el nombre descriptivo definido en la biblioteca forman parte de la identidad de la misma. Las bibliotecas de tipos se pueden buscar en el Registro usando su identificador LIBID, su versión y su identificador LCID.

Representación de biblioteca de tipos

[ uuid(0D26FC72-7EB1-4565-AA75-DA5F177EFA66),
  lcid(0x0409), 
  version(2.1), 
  helpstring("Acme Widget Library")
] 
library Acme 
{
…
}; 

Identificador de bibliotecas (LIBID)

Cuando el proceso de exportación convierte un ensamblado en una biblioteca de tipos, conserva la identidad de la biblioteca. Cada ensamblado identificado de forma única se convierte en una biblioteca de tipos identificada de forma única. Para garantizar esta exclusividad, el proceso de conversión usa el nombre, la versión y la clave pública del ensamblado para producir un identificador LIBID.

Concretamente, la combinación proporciona las siguientes garantías:

  • Una combinación de nombre, versión y clave pública siempre genera el mismo identificador LIBID.

  • Dos ensamblados con combinaciones de nombre, versión y clave pública distintas nunca generan los mismos identificadores LIBID.

Puede aplicar el GuidAttribute para establecer explícitamente el LIBID.

Versión y número de compilación

El proceso de conversión pasa también la información de versión del ensamblado a la biblioteca de tipos, aunque las bibliotecas contienen un número de versión que consta sólo de dos partes mientras que el número de versión de los ensamblados consta de cuatro partes. Los números de versión principal y secundaria de un ensamblado se trasladan a la biblioteca de tipos. Los números de compilación de los ensamblados se descartan durante la conversión, lo que indica que dos ensamblados que sólo se diferencian en el número de compilación producen siempre la misma biblioteca de tipos. Los ensamblados con 0 que representan los números menores y mayores (0.0.X.X) producen una biblioteca de tipos con un número de versión 1.0.

Por lo general, no hay ninguna garantía sobre el contenido de una biblioteca de tipos generada a partir de varias versiones de un ensamblado. No se puede garantizar que un tipo definido en la versión 1.0 de una biblioteca concreta esté en una segunda versión de la misma biblioteca.

Información de configuración regional

La cadena del identificador regional de un ensamblado (por ejemplo, us-en) se convierte en un identificador LCID y se almacena en el campo LCID de la biblioteca de tipos. Si la cadena del identificador regional no está en el ensamblado, el proceso de exportación establece el identificador LCID en 0.

Puntos a caracteres de subrayado

A menudo, los nombres de ensamblado contienen puntos que no se admiten en los nombres de bibliotecas de tipos. El proceso de exportación convierte los puntos del campo de nombre de un ensamblado en caracteres de subrayado.

Cadenas helpstring

El proceso de exportación copia AssemblyDescriptionAttribute, si se aplica a un ensamblado en tiempo de diseño, en la cadena helpstring o DocString asociada a una biblioteca de tipos. Ni el campo HelpFile ni el campo HelpContext de la biblioteca de tipos están establecidos. No se establece ninguno de los indicadores LIBFLAG de la biblioteca de tipos.

Otros campos de ensamblado

Otros campos de los ensamblados tales como Processor, OSInformation, CodeBase, Alias, AssemblyHash, Configuration y Flags se descartan durante el proceso de conversión.

El proceso de exportación no establece atributos de biblioteca de tipos tales como hidden, restricted y control.

Vea también

Conceptos

Conversión de módulos exportados

Conversión de tipos exportados

Conversión de miembros exportados

Conversión de parámetros exportados

Otros recursos

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