Conversão de Assembly exportados
Qualquer ferramenta ou uma API que exporta um assembly para uma biblioteca de tipos deve converter o nível mais externo de um assembly gerenciado pela primeira vez. O processo converte cada assembly individual em uma biblioteca de tipo único, impondo um mapeamento individual entre o assembly e a biblioteca de tipos. Você não pode dividir um assembly em várias bibliotecas de tipo. Um assembly consistentemente produz a mesma biblioteca de tipos, independentemente da forma de sua conversão ou detalhes.
Assembly e identidades de biblioteca de tipo
Identidade do assembly consiste em quatro elementos listados na tabela a seguir.
Elemento |
Descrição |
---|---|
Nome |
A seqüência de caracteres usada para identificar o assembly. Normalmente, essa seqüência é o mesmo que o nome de arquivo do assembly sem a extensão. |
Chave pública |
Parte pública de um par de chaves criptográficas pública/particular. |
Versão |
Seqüência numérica quatro partes, consistindo de major, minor, compilação e números de revisão. |
Seqüência de caracteres de cultura |
Localidade em que o conjunto do suporte. |
Em combinação, esses campos produzem um nome forte para identificar um assembly.
Manifesto do assembly 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
}
Em contraste, uma identidade de biblioteca de tipo consiste em três elementos: um identificador (ID da biblioteca) de biblioteca, a versão e uma identificação de Local (LCID). O nome do arquivo que contém as informações de tipo, nem o nome amigável definido dentro da biblioteca é parte da identidade da biblioteca. Você pode localizar uma biblioteca de tipos através do registro, usando sua ID da biblioteca, a versão e o LCID.
Representação de biblioteca de tipo
[ uuid(0D26FC72-7EB1-4565-AA75-DA5F177EFA66),
lcid(0x0409),
version(2.1),
helpstring("Acme Widget Library")
]
library Acme
{
…
};
Identificador de biblioteca (ID da biblioteca)
Quando o processo de exportação converte um assembly para uma biblioteca de tipos, ele preserva a identidade da biblioteca. Cada assembly identificado exclusivamente torna-se uma biblioteca de tipos identificadas com exclusividade. Para garantir a exclusividade, o processo de conversão usa o nome, versão e chave pública de um assembly para produzir uma ID da biblioteca.
Especificamente, a combinação fornece as seguintes garantias:
Um nome, a versão e a combinação de chave pública consistentemente produz o mesmo ID da biblioteca.
Dois assemblies com outro nome, versão e combinações de chaves públicas nunca produzem os mesmos LIBIDs.
Você pode aplicar o GuidAttribute definir explicitamente o ID da biblioteca.
Versão e número de compilação
O processo de conversão também passa informações de versão do assembly para a biblioteca de tipos, embora as bibliotecas de tipo contêm apenas um número de versão de duas partes, enquanto os assemblies contém um número de versão de quatro partes. Os números de versão primária e secundária de um assembly são transportados para a biblioteca de tipos. Números de compilação do assembly são descartados na conversão, o que indica que dois assemblies, diferindo somente pelos respectivos números de compilação sempre produzem a mesma biblioteca de tipos. Assemblies com 0 representando os números principais e secundários (0.0.X.X) produzem uma biblioteca de tipos com um número de 1.0 versão.
Em geral, não há nenhuma garantia sobre o conteúdo de uma biblioteca de tipos gerados a partir de várias versões do assembly. Um tipo definido na versão 1.0 de uma determinada biblioteca não é garantido em uma segunda versão da mesma biblioteca.
Informações de localidade
String de identificador de localidade do assembly (en-, por exemplo) é convertido para um LCID e armazenado no campo LCID na biblioteca de tipos. Se a seqüência de caracteres de identificador de localidade está ausente no assembly, o processo de exportação define o LCID para 0.
Períodos para sublinhados
Nomes assembly geralmente contêm períodos, que não são permitidos em nomes de biblioteca de tipos. O processo de exportação converte períodos no campo nome de um assembly como sublinhados.
Helpstrings
As cópias do processo de exportação do AssemblyDescriptionAttribute se aplicado a um assembly em tempo de design, o helpstring ou DocString associados a uma biblioteca de tipo. Nem o HelpFile campo nem a HelpContext campo na biblioteca de tipos está definido. Nenhum da LIBFLAGS na biblioteca de tipos é definido.
Outros campos de Assembly
Assembly de outro campos, como processador, OSInformation, CodeBase, Alias, AssemblyHash, configuração, e sinalizadores são descartados durante a conversão.
O processo de exportação não definir atributos de tipo de biblioteca, como oculto, restritos, e controle.
Consulte também
Conceitos
Conversão do parâmetro exportado