Importieren einer Typbibliothek als Assembly
Aktualisiert: November 2007
Definitionen von COM-Typen befinden sich in der Regel in einer Typbibliothek. Typmetadaten dagegen werden von CLS-kompatiblen Compilern in einer Assembly erstellt. Die beiden Typinformationsquellen unterscheiden sich wesentlich voneinander.
Hinweis: |
---|
Verwenden Sie wenn möglich stets die primäre Interop-Assembly, die vom Verfasser der COM-Komponente veröffentlicht wurde, die Sie in den verwalteten Code aufnehmen möchten. Die Typen in der primären Interop-Assembly wurden importiert und können jederzeit aktiviert und von verwaltetem Code aufgerufen werden. Einzelheiten zum Erstellen und Verwenden von primären Interop-Assemblys finden Sie unter Primäre Interop-Assemblys. |
In diesem Abschnitt werden die Techniken zum Generieren von Metadaten aus einer Typbibliothek beschrieben. Die resultierende Assembly wird als Interop-Assembly bezeichnet.
Generieren von Metadaten
COM-Typbibliotheken können eigenständige TLB-Dateien sein, z. B. Loanlib.tlb . Einige Typbibliotheken sind im Ressourcenabschnitt einer DLL-Datei oder einer EXE-Datei eingebettet. Weitere Quellen für Typbibliotheksinformationen sind OLB-Dateien und OCX-Dateien.
Nachdem Sie die Typbibliothek mit der Implementierung des COM-Zieltyps gefunden haben, stehen mehrere Optionen zum Generieren einer Interop-Assembly mit Typmetadaten zur Verfügung:
Visual Studio 2005
Mit Visual Studio 2005 werden die COM-Typen in einer Typbibliothek automatisch in Metadaten in einer Assembly konvertiert. Entsprechende Anweisungen finden Sie unter Gewusst wie: Hinzufügen von Verweisen zu Typbibliotheken.
Type Library Importer-Tool (Tlbimp.exe)
Die Metadaten in der resultierenden Interop-Datei können mithilfe von Befehlzeilenoptionen des Typbibliothekimporters angepasst werden. Die Typen werden aus einer vorhandenen Typbibliothek importiert, und eine Interop-Assembly und ein Namespace werden generiert. Entsprechende Anweisungen finden Sie unter Gewusst wie: Generieren von Interop-Assemblys aus Typbibliotheken.
TypeLibConverter-Klasse
Die TypeLibConverter-Klasse (im System.Runtime.InteropServices-Namespace) enthält Methoden zum Konvertieren von Co-Klassen und Schnittstellen innerhalb einer Typbibliothek in Metadaten innerhalb einer Assembly. Die API (Application Programming Interface, Schnittstelle für Anwendungsprogrammierung) erstellt dieselbe Metadatenausgabe wie Tlbimp.exe. Mit der TypeLibConverter-Klasse können Sie, anders als mit Tlbimp.exe, eine Typbibliothek im Speicher in Metadaten konvertieren.
Benutzerdefinierte Wrapper
Wenn eine Typbibliothek nicht verfügbar oder inkorrekt ist, können Sie eine doppelte Definition der Klasse oder Schnittstelle im verwalteten Quellcode erstellen. Anschließend kompilieren Sie den Quellcode mit einem Compiler, der Common Language Runtime als Ziel hat, sodass Metadaten in einer Assembly erstellt werden.
Um COM-Typen manuell zu definieren, müssen Sie auf folgende Elemente zugreifen können:
Präzise Beschreibungen der zu definierenden Co-Klassen und Schnittstellen.
Ein Compiler, z. B. ein C#-Compiler, mit dem Sie die entsprechenden .NET Framework-Klassendefinitionen generieren können.
Kenntnis der Regeln für die Konvertierung von Typbibliotheken in Assemblys.
Das Schreiben von benutzerdefinierten Wrappern erfordert eine fortgeschrittene Technik, die Sie nur selten anwenden. Weitere Informationen zum Generieren von benutzerdefinierten Wrappern finden Sie unter dem Thema Anpassen von Standardwrappern.
Detaillierte Informationen zum Importiervorgang mit COM-Interop finden Sie unter Zusammenfassung: Konvertieren einer Typbibliothek in eine Assembly.
Siehe auch
Aufgaben
Gewusst wie: Hinzufügen von Verweisen zu Typbibliotheken
Gewusst wie: Generieren von Interop-Assemblys aus Typbibliotheken
Konzepte
Verfügbarmachen von COM-Komponenten für .NET Framework
Verwenden von COM-Typen in verwaltetem Code
Kompilieren eines Interop-Projekts
Bereitstellen einer Interop-Anwendung
Referenz
Type Library Importer-Tool (Tlbimp.exe)
Weitere Ressourcen
Zusammenfassung: Konvertieren einer Typbibliothek in eine Assembly