Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Note
Dieser Leitfaden ist spezifisch für .NET Framework. Verwenden Sie für moderne .NET-COM-Interoperabilität die quellgenerierte COM-Interoperabilität oder die System.Runtime.InteropServices.ComWrappers-API. Weitere Informationen finden Sie unter COM-Interopübersicht und COM-Quellgenerierung.
Es gibt zwei Möglichkeiten, eine primäre Interop-Assembly zu generieren:
Verwendung von Type Library Importer (Tlbimp.exe), der im Windows SDK enthalten ist.
Die einfachste Möglichkeit zum Erstellen primärer Interop-Assemblys besteht darin, Tlbimp.exe (Type Library Importer-Tool) zu verwenden. "Tlbimp.exe" bietet die folgenden Schutzvorrichtungen:
- Es überprüft, ob andere registrierte primäre Interop-Assemblys vorhanden sind, bevor neue Interop-Assemblys für Verweise auf geschachtelte Typbibliotheken erstellt werden.
- Es kann die primäre Interop-Assembly nicht ausgeben, wenn Sie nicht entweder den Container oder den Dateinamen angeben, um der primären Interop-Assembly einen starken Namen zu geben.
- Generiert keine primäre Interop-Assembly, wenn Sie Verweise auf abhängige Assemblies weglassen.
- Es kann keine primäre Interop-Assembly ausgeben, wenn Sie Verweise auf abhängige Assemblys hinzufügen, die keine primären Interop-Assemblys sind.
Manuelles Erstellen von primären Interop-Assemblys in Quellcode, indem eine Sprache verwendet wird, die mit der Common Language Specification (CLS) kompatibel ist, beispielsweise C#. Dieser Ansatz ist hilfreich, wenn keine Typbibliothek verfügbar ist.
Sie benötigen ein kryptografisches Schlüsselpaar, um eine Assembly mit einem starken Namen zu signieren. Ausführliche Informationen finden Sie unter Erstellen eines Schlüsselpaares.
Generieren Sie eine primäre Interop-Assembly mithilfe von Tlbimp.exe
Geben Sie an der Eingabeaufforderung Folgendes ein:
tlbimptlbfile/primary /keyfile:filename/out:assemblyname
In diesem Befehl ist tlbfile die Datei, die die COM-Typbibliothek enthält, filename der Name des Containers oder der Datei, die das Schlüsselpaar enthalten, und assemblyname der Name der zu unterzeichnenden Assembly mit einem starken Namen.
Primäre Interop-Assemblys können nur Verweise auf andere primäre Interop-Assemblys enthalten. Wenn Ihre Assembly auf Typen aus einer COM-Typbibliothek eines Drittanbieters verweist, müssen Sie eine primäre Interop-Assembly von dem Herausgeber abrufen, bevor Sie Ihre primäre Interop-Assembly generieren können. Wenn Sie der Herausgeber sind, müssen Sie eine primäre Interop-Assembly für die abhängige Typbibliothek generieren, bevor Sie die verweisende primäre Interop-Assembly generieren.
Eine abhängige primäre Interop-Assembly mit einer Versionsnummer, die von der der ursprünglichen Typbibliothek abweicht, kann nicht erkennt werden, wenn sie im aktuellen Verzeichnis installiert ist. Sie müssen die abhängige primäre Interop-Assembly in der Windows-Registrierung registrieren oder die /reference-Option verwenden, um sicherzustellen, dass „Tlbimp.exe“ die abhängige DLL finden kann.
Sie können auch mehrere Versionen einer Typbibliothek einschließen. Anweisungen hierzu finden Sie unter Vorgehensweise: Einschließen mehrerer Versionen von Typbibliotheken.
Beispiel
Im folgenden Beispiel wird die COM-Typbibliothek LibUtil.tlb importiert und die Assembly LibUtil.dll mit einem starken Namen signiert, indem die Schlüsseldatei CompanyA.snk verwendet wird. Wenn ein bestimmter Namespace-Name weggelassen wird, ergibt dieses Beispiel den Standard-Namespace LibUtil.
tlbimp LibUtil.tlb /primary /keyfile:CompanyA.snk /out:LibUtil.dll
Für einen aussagekräftigeren Namen (mit der Benennungsrichtline Herstellername.Bibliotheksname) überschreibt das folgende Beispiel den Standardnamen für die Assemblydatei und den Namespace.
tlbimp LibUtil.tlb /primary /keyfile:CompanyA.snk /namespace:CompanyA.LibUtil /out:CompanyA.LibUtil.dll
Im folgenden Beispiel wird MyLib.tlb importiert, das auf CompanyA.LibUtil.dll verweist, und die Assembly CompanyB.MyLib.dll wird mithilfe der Schlüsseldatei CompanyB.snk mit einem starken Namen signiert. Der Namespace CompanyB.MyLib überschreibt den Standard-Namespace-Namen.
tlbimp MyLib.tlb /primary /keyfile:CompanyB.snk /namespace:CompanyB.MyLib /reference:CompanyA.LibUtil.dll /out:CompanyB.MyLib.dll