Freigeben über


Überblick über die Interoperabilität (C#-Programmierhandbuch)

Aktualisiert: Juli 2008

In diesem Thema sind Methoden beschrieben, mit denen die Interoperabilität zwischen verwaltetem C#-Code und nicht verwalteten Code ermöglicht wird.

Plattformaufruf

Der Plattformaufruf ist ein Dienst, mit dem nicht verwaltete Funktionen, die in DLLs (Dynamic Link Libraries) implementiert sind (z. B. in der Microsoft Win32-API), von verwaltetem Code aufgerufen werden können. Durch diesen Dienst wird eine exportierte Funktion gesucht und aufgerufen, und die dazugehörigen Argumente (ganze Zahlen, Zeichenfolgen, Arrays, Strukturen usw.) werden gegebenenfalls über die Grenzen der Interoperation hinaus gemarshallt.

Weitere Informationen finden Sie unter Verwenden nicht verwalteter DLL-Funktionen und Gewusst wie: Verwenden eines Plattformaufrufs zum Wiedergeben einer Wavedatei (C#-Programmierhandbuch).

Hinweis:

Die Common Language Runtime (CLR) verwaltet den Zugriff auf Systemressourcen. Durch das Aufrufen von nicht verwaltetem Code außerhalb der CLR wird dieser Sicherheitsmechanismus umgangen, deshalb stellt diese Vorgehensweise ein Sicherheitsrisiko dar. Beispielsweise können Ressourcen in nicht verwaltetem Code direkt von nicht verwaltetem Code aufgerufen werden, indem der CLR-Sicherheitsmechanismus umgegangen wird. Informationen finden Sie unter .NET Framework Security.

C++-Interop

Sie können C++-Interop, auch als IJW (It Just Works) bezeichnet, zum Umschließen einer systemeigenen C++-Klasse verwenden, sodass diese von Code verarbeitet werden kann, der in C# oder einer anderen .NET Framework-Programmiersprache erstellt wurde. Dazu schreiben Sie C++-Code, um eine systemeigene DLL oder COM-Komponente zu umschließen. Im Gegensatz zu anderen .NET Framework-Programmiersprachen verfügt Visual C++ über Interoperabilitätsunterstützung, mit der verwalteter und nicht verwalteter Code in derselben Anwendung und sogar in derselben Datei vorhanden sein können. Dann erstellen Sie den C++-Code mit dem /clr-Compilerschalter, um eine verwaltete Assembly zu erzeugen. Letztlich fügen Sie der Assembly im C#-Projekt einen Verweis hinzu und verwenden die umschlossenen Objekte wie jede andere verwaltete Klasse.

Weitere Informationen finden Sie unter Gewusst wie: Kapseln einer systemeigenen Klasse zur Verwendung in C# und Verwenden von C++-Interop (implizites PInvoke).

Verfügbarmachen von COM-Komponenten für C#

Sie können eine COM-Komponente aus einem C#-Projekt verwenden. Dazu müssen Sie die folgenden allgemeinen Schritte ausführen:

  1. Suchen Sie eine COM-Komponente, die Sie verwenden möchten, und registrieren Sie diese. Verwenden Sie regsvr32.exe, um eine COM-DLL zu registrieren oder die Registrierung aufzuheben.

  2. Fügen Sie dem Projekt einen Verweis auf die COM-Komponente oder Typbibliothek hinzu.

    Wenn Sie den Verweis hinzufügen, gibt Visual Studio eine .NET Framework-Interop-Assembly mit dem Type Library Importer-Tool (Tlbimp.exe) aus, der eine Typbibliothek als Eingabe akzeptiert. Die Assembly, auch als RCW (Runtime Callable Wrapper) bezeichnet, enthält verwaltete Klassen und Schnittstellen, die die COM-Klassen und Schnittstellen in der Typbibliothek umschließen. Visual Studio fügt dem Projekt einen Verweis auf die generierte Assembly hinzu.

  3. Erstellen Sie eine Instanz einer im RCW definierten Klasse. Diese wiederum erstellt eine Instanz des COM-Objekts.

  4. Verwenden Sie das Objekt genau wie jedes andere verwaltete Objekt. Wenn das Objekt von der Garbage Collection zurückgefordert wird, wird die Instanz des COM-Objekts vom Speicher ebenfalls freigegeben.

Weitere Informationen finden Sie unter Verfügbarmachen von COM-Komponenten für .NET Framework.

Verfügbarmachen von C# für COM

COM-Clients können C#-Typen verwenden, die ordnungsgemäß verfügbar gemacht wurden. Mit den folgenden Grundschritten machen Sie C#-Typen verfügbar:

  1. Fügen Sie im C#-Projekt Interop-Attribute hinzu.

    Sie können ein Assembly-COM sichtbar machen, indem Sie Visual C#-Projekteigenschaften ändern. Weitere Informationen finden Sie unter Dialogfeld "Assemblyinformationen".

  2. Generieren Sie eine COM-Typbibliothek, und registrieren Sie diese für die Verwendung durch COM.

    Sie können Visual C#-Projekteigenschaften so ändern, dass die C#-Assembly für COM-Interop automatisch registriert wird. Visual Studio generiert eine Typbibliothek mit dem Assembly Registration-Tool (Regasm.exe), wobei der Befehlszeilenschalter /tlb angegeben wird, der eine verwaltete Assembly als Eingabe akzeptiert. Diese Typbibliothek beschreibt die public-Typen in der Assembly und fügt Registrierungseinträge hinzu, sodass COM-Clients verwaltete Klassen erstellen können. Weitere Informationen finden Sie unter Gewusst wie: Registrieren einer Komponente für COM-Interop.

Weitere Informationen finden Sie unter Verfügbarmachen von .NET Framework-Komponenten in COM und COM-Beispielklassen (C#-Programmierhandbuch).

Siehe auch

Konzepte

C#-Programmierhandbuch

Weitere Ressourcen

Interaktion mit nicht verwaltetem Code

Erweiterte COM-Interoperabilität

Interoperabilität in .NET Compact Framework

Improving Interop Performance

Einführung in COM-Interop

Marshallen zwischen verwaltetem und nicht verwaltetem Code

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

Juli 2008

Dokumentationsaktualisierung, um mehr Typen von Interoperabilität abzudecken.

Informationsergänzung.