Verwandeln Sie eine einfache C # -DLL in eine COM-Interop-Komponente
Wie mache ich eine C# - DLL in eine COM-interop-DLL, die verwendet werden können, eine VB6-Anwendung?
InformationsquelleAutor der Frage Elena Lawrence | 2011-08-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist die Antwort, die ich wollte zu finden, in StackOverflow, konnte aber nicht. Es stellt sich heraus, ziemlich einfach zu sein, um wiederum eine einfache C# - dll in eine COM-dll.
Zum erstellen der C# - dll
Erstellen Sie eine Lösung mit einer C# - Klasse-Projekt. Die Klasse sollte ein interface für die properties/Methoden und ein interface für die Ereignisse. Zuweisen GUID-Attribute auf die Klassen und Schnittstellen, wie beschrieben, in MSDN - Beispiel COM-Klasse (C# - Programmierhandbuch). Siehe auch: MSDN - gewusst Wie: auslösen von Ereignissen erfolgt über ein COM-Spüle.
In der Projekt-Eigenschaften - > Registerkarte Anwendung > Montage-Informationen-Taste > check "Make assembly COM-Sichtbar". Dies macht alle öffentlichen Methoden der Klasse COM sichtbar.
In der Projekt-Eigenschaften - > Registerkarte "Erstellen" > "Zielplattform" x86".
Das ist alles, was Sie tun müssen, um die DLL zu erstellen. Zum Aufruf der DLL, die Sie brauchen, um es zu registrieren.
Registrieren der DLL auf Ihrem Entwicklungscomputer
Können Sie die DLL registrieren, die eine der folgenden weisen:
Manuell registrieren Sie die DLL mit RegAsm. Dieser ermöglicht Ihnen die Registrierung der DLL in das Verzeichnis Ihrer Wahl, anstatt in das build-Verzeichnis. Dies ist die Methode, die ich verwendet.
Öffnen Sie eine Kommandozeile mit administrator-rechten und geben Sie
RegAsm.exe kann sein gefunden in "C:\Windows\Microsoft.NET\Framework\v2.0.50727" während "mydll.dll" ist der name der DLL;
tlb
bedeutet "eine Bibliothek Typ erstellen";codebase
bedeutet ", schreiben die directory-Speicherort in der Registrierung, vorausgesetzt, es ist nicht gesetzt, die im GAC".RegAsm wird eine Warnung angezeigt, dass die assembly sollte mit starke Namen. Man kann es ignorieren.
Zu diesem Zeitpunkt sollten Sie in der Lage, fügen Sie einen Verweis auf die COM-DLL in VB6, sehen es mit Intellisense, und führen Sie es wie eine normale COM-DLL.
Installieren der DLL mit InstallShield
Wenn Sie mit InstallShield zu installieren, die DLL zusammen mit dem rest der Anwendung, machen Sie Folgendes.
In InstallShield, hinzufügen einer neuen Komponente zu der Liste der Komponenten. Denken Sie daran, verknüpfen Sie die Komponente mit einer Funktion.
Festlegen von Komponenteneigenschaften ".NET COM Interop", ja.
Hinzufügen .dll-Datei in der Files-Sektion der Komponente.
Überprüfen Sie nicht die "Selbstregistrierung" - Eigenschaft.
Rechts-Klick auf die .dll-Datei und wählen Sie "Schlüsseldatei".
Hinzufügen .der tlb-Datei in der Files-Sektion der Komponente.
Überprüfen Sie die "Self-Register" - Eigenschaft.
Die richtige version des .Net Framework muss vorhanden sein auf dem Ziel-PC.
Das ist es.
InformationsquelleAutor der Antwort Kieren Johnstone
Als de Erweiterung zu @Kieren Johnstone Antwort ein praktisches code-Beispiel, Klasse änderungen, die Sie tun müssen:
Aus:
:
Hoffe, dies erspart Ihnen einige Zeit
InformationsquelleAutor der Antwort Matas Vaitkevicius
Microsoft hat eine schnelle wie hier. Allerdings werden Sie brauchen, um die dll zu registrieren. Machen Sie Ihre C# - dll mehr wie eine einfache C # - dll (C# Unmanaged Export), verwenden Sie diese Methode, die wird im detail beschrieben hier.
InformationsquelleAutor der Antwort pcunite
COM-Interop ist eine Technologie, die enthalten im .NET Framework Common Language Runtime (CLR), die es ermöglicht, Component Object Model (COM) - Objekten zu interagieren .NET-Objekte, und Umgekehrt. COM-Interop zum Ziel, den Zugang zu der bestehenden COM-Komponenten, ohne dass die ursprünglichen Komponenten geändert werden und Umgekehrt.
Mehr unter:
http://www.writeulearn.com/com-interop-using-csharp/
InformationsquelleAutor der Antwort bhupesh