Partager via


Conversion d'un assembly exporté

Tout outil ou API qui exporte un assembly vers une bibliothèque de types doit d'abord convertir le niveau le plus à l'extérieur d'un assembly managé. Le processus convertit chaque assembly individuel en une bibliothèque de types unique, en imposant un mappage un-à-un entre l'assembly et la bibliothèque de types. Vous ne pouvez pas diviser un assembly en plusieurs bibliothèques de types. Un assembly produit uniformément la même bibliothèque de types, indépendamment des détails ou de son mode de conversion.

Identités de l'assembly et de la bibliothèque de types

L'identité de l'assembly se compose des quatre éléments répertoriés dans le tableau suivant.

Élément

Description

Nom

Chaîne utilisée pour identifier l'assembly. En général, cette chaîne est identique au nom de fichier de l'assembly sans l'extension.

Clé publique

Partie publique d'une paire de clés de chiffrement publique/privée.

Version

Chaîne numérique de quatre segments comprenant les numéros de version principale, secondaire, build et révision.

Chaîne de culture

Paramètres régionaux pris en charge par l'assembly.

Une fois combinés, ces champs produisent un nom fort permettant d'identifier l'assembly.

Manifeste d'assembly partiel

.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
}

L'identité de la bibliothèque de types comprend, en revanche, trois éléments : un identificateur de bibliothèque (LIBID, Library Identifier), la version et un identificateur local (LCID, Local Identification). Ni le nom de fichier contenant les informations de type, ni le nom convivial défini dans la bibliothèque ne font partie de l'identité de la bibliothèque. Vous pouvez retrouver une bibliothèque de types via le Registre en utilisant ses éléments LIBID, version et LCID.

Représentation de la bibliothèque de types

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

LIBID (Library Identifier)

Lorsque le processus d'exportation convertit un assembly en une bibliothèque de types, il conserve l'identité de la bibliothèque. Chaque assembly identifié de manière univoque devient une bibliothèque de types identifiée aussi de manière univoque. Pour assurer ce caractère univoque, le processus de conversion utilise le nom, la version et la clé publique provenant d'un assembly pour produire un LIBID.

La combinaison apporte plus précisément les garanties suivantes :

  • Une combinaison nom/version/clé publique produit régulièrement le même LIBID.

  • Deux assemblys possédant des combinaisons nom/version/clé publique différentes ne produisent jamais les mêmes LIBID.

Vous pouvez appliquer le GuidAttribute pour définir explicitement le LIBID.

Numéro de version et de build

Le processus de conversion passe également des informations concernant la version de l'assembly à la bibliothèque de types, même si les bibliothèques de types contiennent uniquement un numéro de version à deux éléments, alors que les assemblys contiennent un numéro de version à quatre éléments. Les numéros des versions principale et secondaire d'un assembly sont transmis à la bibliothèque de types. Les numéros de build de l'assembly sont ignorés lors de la conversion, ce qui signifie que deux assemblys qui diffèrent uniquement par leur numéro de build produisent toujours la même bibliothèque de types. Les assemblys contenant le numéro 0 représentant les numéros des versions principale et secondaire (0.0.X.X) produisent une bibliothèque de types avec un numéro de version 1.0.

En général, il n'existe aucune garantie concernant le contenu d'une bibliothèque de types générée à partir de versions d'assembly multiples. Rien n'assure en effet qu'un type défini dans la version 1.0 d'une bibliothèque particulière se retrouvera dans une version secondaire de la même bibliothèque.

Informations relatives aux paramètres régionaux

La chaîne de l'identificateur de paramètres régionaux d'un assembly (us-en, par exemple) est convertie en un LCID et stockée dans le champ LCID de la bibliothèque de types. Si la chaîne de l'identificateur de paramètres régionaux est absente dans l'assembly, le processus d'exportation attribue la valeur 0 au LCID.

Des symboles « . » (point) convertis en traits de soulignement

Les noms d'assembly contiennent souvent des signes « . » (point), qui ne sont pas admis dans les noms des bibliothèques de types. La procédure d'exportation convertit ces points en traits de soulignement dans le champ de nom d'un assembly.

Helpstring

Le processus d'exportation copie AssemblyDescriptionAttribute, si cet attribut est appliqué à l'assembly au moment du design, vers l'élément helpstring ou DocString associé à une bibliothèque de types. Aucun des champs HelpFile et HelpContext n'est défini dans la bibliothèque de types. Aucun des LIBFLAGS de la bibliothèque de types n'est défini.

Autres champs de l'assembly

D'autres champs de l'assembly tels que Processor, OSInformation, CodeBase, Alias, AssemblyHash, Configuration et Flags sont ignorés pendant la conversion.

Le processus d'exportation ne définit pas les attributs de la bibliothèque de types, tels que hidden, restricted et control.

Voir aussi

Concepts

Conversion d'un module exporté

Conversion d'un type exporté

Conversion d'un membre exporté

Conversion d'un paramètre exporté

Autres ressources

Résumé de la conversion d'un assembly en bibliothèque de types