Konvertierung von exportierten Assemblys

Alles Tools und APIs, die eine Assembly in eine Typbibliothek exportieren, müssen zuerst die äußerste Ebene einer verwalteten Assembly konvertieren. Jede einzelne Assembly wird in eine einzelne Typbibliothek konvertiert, wodurch eine Eins-zu-Eins-Zuordnung von Assembly und Typbibliothek gewährleistet ist. Sie können eine Assembly nicht auf mehrere Bibliotheken verteilen. Eine Assembly hat immer dieselbe Typbibliothek zum Ergebnis, unabhängig von der Art oder den Details der Konvertierung.

Identitäten von Assemblys und Typbibliotheken

Die Identität einer Assembly besteht aus den vier Elementen, die in der folgenden Tabelle aufgelistet sind.

Element

Beschreibung

Name

Zeichenfolge zur Identifizierung der Assembly. Normalerweise besteht diese Zeichenfolge aus dem Namen der Assemblydatei ohne Dateierweiterung.

Öffentlicher Schlüssel

Öffentlicher Teil eines öffentlich/privaten kryptografischen Schlüsselpaars.

Version

Vierteilige numerische Zeichenfolge, bestehend aus Haupt-, Neben-, Build- und Revisionsnummer.

Kultur-Zeichenfolge

Von der Assembly unterstütztes Gebietsschema.

Kombiniert ergeben diese Felder einen starken Namen zur Identifizierung der Assembly.

Teil-Assemblymanifest

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

Im Gegensatz dazu besteht die Identität einer Typbibliothek aus drei Elementen: einem Bibliotheksbezeichner (LIBID, Libary Identifier), der Version und einem lokalen Bezeichner (LCID, Local Identification). Weder der Name der Datei, welche die Typinformationen enthält, noch der in der Bibliothek definierte angezeigte Name sind Bestandteil der Bibliotheksidentität. Sie können eine Typbibliothek mithilfe der Registrierung unter Verwendung der jeweiligen LIBID, Version und LCID finden.

Typbibliothekdarstellung

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

Bibliotheksbezeichner (LIBID)

Wird durch den Exportvorgang eine Assembly in eine Typbibliothek konvertiert, wird die Bibliotheksidentität beibehalten. Jede eindeutig identifizierte Assembly wird zu einer eindeutig identifizierten Typbibliothek. Um die Eindeutigkeit zu gewährleisten, verwendet der Konvertierungsvorgang zum Erstellen einer LIBID den Namen, die Version und den öffentlichen Schlüssel einer Assembly.

Die Kombination gewährleistet insbesondere Folgendes:

  • Eine Kombination aus Name, Version und öffentlichem Schlüssel ergibt immer dieselbe LIBID.

  • Zwei Assemblys mit verschiedenen Kombinationen aus Name, Version und öffentlichem Schlüssel haben immer verschiedene LIBIDs.

Sie können GuidAttribute anwenden, um die LIBID explizit festzulegen.

Versions- und Buildnummer

Der Konvertierungsvorgang übergibt auch Versionsinformationen der Assembly an die Typbibliothek, obwohl diese nur eine zweiteilige Versionsnummer enthält. Assemblys hingegen enthalten eine vierteilige Versionsnummer. Die Hauptversionsnummer und die Nebenversionsnummer einer Assembly werden in die Typbibliothek übertragen. Assemblybuildnummern werden während der Konvertierung verworfen. Dadurch werden zwei Assemblys, die sich nur durch verschiedene Buildnummern unterscheiden, derselben Typbibliothek übergeben. Assemblys, die als Haupt- und Nebenversionsnummer 0 aufweisen (0.0.X.X), führen zu einer Typbibliothek mit der Versionsnummer 1.0.

Im Allgemeinen gibt es keine Garantien bezüglich des Inhalts einer Typbibliothek, die aus mehreren Assemblyversionen generiert wurde. Weiterhin ist nicht gewährleistet, dass ein Typ, der in Version 1.0 einer bestimmten Bibliothek definiert ist, auch in der zweiten Version derselben Bibliothek definiert ist.

Gebietsschemainformationen

Die Gebietsschemabezeichner-Zeichenfolge einer Assembly (z. B. us-en) wird in eine LCID konvertiert und im LCID-Feld der Typbibliothek gespeichert. Wenn die Gebietsschemabezeichner-Zeichenfolge einer Assembly fehlt, setzt der Exportvorgang die LCID auf 0.

Punkte zu Unterstrichen

Anders als Assemblynamen dürfen Typbibliotheksnamen keine Punkte enthalten. Der Exportvorgang konvertiert alle Punkte im Namensfeld einer Assembly in Unterstriche.

Helpstrings

Der Exportvorgang kopiert das AssemblyDescriptionAttribute in die mit der Typbibliothek verknüpfte helpString oder DocString, wenn dieses Attribut während der Entwurfszeit auf die Assembly angewendet wurde. Das HelpFile-Feld und das HelpContext-Feld der Typbibliothek sind nicht festgelegt. Die LIBFLAGS in der Typbibliothek sind nicht festgelegt.

Andere Assemblyfelder

Andere Assemblyfelder wie z. B. Processor, OSInformation, CodeBase, Alias, AssemblyHash, Configuration und Flags werden während der Konvertierung verworfen.

Der Exportvorgang legt keine Typbibliotheksattribute wie z. B. hidden, restricted oder control fest.

Siehe auch

Konzepte

Konvertieren exportierter Module

Konvertieren exportierter Typen

Konvertieren exportierter Member

Konvertieren exportierter Parameter

Weitere Ressourcen

Zusammenfassung: Konvertieren einer Assembly in eine Typbibliothek