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