Bereitstellen einer Interoperabilitätsanwendung

Note

In diesem Artikel werden .NET Framework-COM-Interopanleitungen beschrieben, die ältere Tools und Bereitstellungsmodelle wie Tlbimp.exe, primäre Interopassemblys, den globalen Assemblycache und registrierungsbasierte COM-Registrierung verwenden. Verwenden Sie für moderne .NET die COM-Quellgenerierung oder die ComWrappers API. Weitere Informationen finden Sie unter COM-Interoperabilität.

Eine Interoperabilitätsanwendung enthält in der Regel eine .NET-Clientassembly, eine oder mehrere Interopassemblys, die unterschiedliche COM-Typbibliotheken darstellen, und eine oder mehrere registrierte COM-Komponenten. Visual Studio und das Windows SDK stellen Tools zum Importieren und Konvertieren einer Typbibliothek in eine Interopassembly bereit, wie in "Importieren einer Typbibliothek als Assembly" beschrieben. Es gibt zwei Möglichkeiten zum Bereitstellen einer Interoperabilitätsanwendung:

  • Durch die Verwendung eingebetteter Interoptypen: Weisen Sie den Compiler an, Typinformationen aus einer Interop-Assembly in Ihre ausführbare Datei einzubetten. Der Compiler bettet nur die Typinformationen ein, die Ihre Anwendung verwendet. Sie müssen die Interop-Assembly nicht mit Ihrer Anwendung bereitstellen. Dies ist die empfohlene Technik.
  • Durch Bereitstellen von Interop-Assemblys: Erstellen Sie einen Standardverweis auf eine Interop-Assembly. In diesem Fall muss die Interop-Assembly mit Ihrer Anwendung bereitgestellt werden. Wenn Sie diese Technik verwenden und keine private COM-Komponente verwenden, verweisen Sie immer auf die primäre Interopassembly (PIA), die vom Autor der COM-Komponente veröffentlicht wurde, die Sie in Ihren verwalteten Code integrieren möchten.

Wenn Sie eingebettete Interoperabilitätstypen verwenden, ist die Bereitstellung einfach und unkompliziert. Es gibt nichts Besonderes, was Sie tun müssen. Der Rest dieses Artikels beschreibt die Szenarien für den Einsatz von Interop-Assemblys mit Ihrer Anwendung.

Primäre Interopassemblys

Assemblys können starke Namen haben. Eine Assembly mit starkem Namen enthält den öffentlichen Schlüssel des Herausgebers, der eine eindeutige Identität bereitstellt. Assemblys, die vom Typbibliotheksimporteur (Tlbimp.exe) erstellt werden, können mit der Option "/keyfile " vom Herausgeber signiert werden. Sie können signierte Assemblys im globalen Assemblycache installieren. Nicht signierte Assemblys müssen auf dem Computer des Benutzers als private Assemblys installiert werden.

Private Assemblys

Um eine Assembly zu installieren, die privat verwendet werden soll, müssen sowohl die ausführbare Anwendung als auch die Interopassembly, die importierte COM-Typen enthält, in derselben Verzeichnisstruktur installiert werden. Die folgende Abbildung zeigt eine unsignierte Interop-Assembly, die privat von Client1.exe und Client2.exeverwendet werden soll und sich in separaten Anwendungsverzeichnissen befinden. Die Interopassembly, die in diesem Beispiel als LOANLib.dll bezeichnet wird, wird zweimal installiert.

Verzeichnisstruktur und Windows-Registrierung

Alle COM-Komponenten, die der Anwendung zugeordnet sind, müssen in der Windows-Registrierung installiert werden. Wenn Client1.exe und Client2.exe in der Abbildung auf verschiedenen Computern installiert sind, müssen Sie die COM-Komponenten auf beiden Computern registrieren.

Freigegebene Assemblys

Assemblys, die von mehreren Anwendungen gemeinsam genutzt werden, sollten in einem zentralen Repository installiert werden, das als globaler Assemblycache bezeichnet wird. .NET-Clients können auf dieselbe Kopie der Interopassembly zugreifen, die im globalen Assemblycache signiert und installiert ist. Weitere Informationen über die Erstellung und Verwendung primärer Interop-Assemblys finden Sie unter Primäre Interop-Assemblys.

Siehe auch