Wie ruft man eine .NET DLL von einem Win32 Prozess auf?

8

Was sind die Optionen, wenn es darum geht, eine .NET DLL aus einem Win32-Prozess zu verwenden? Ich muss im Grunde eine C # -DLL von einem Win32-Prozess verwenden.

Ich habe momentan eine mögliche Lösung, die das Hinzufügen der C # -DLL zum GAC (mit RegAsm.exe) und dann das Aufrufen der C # -DLL über COM-Wrapped-Aufrufe erfordert. Diese Lösung ist jedoch ziemlich schwer. Es erfordert, dass die .NET-DLL dem GAC auf allen Computern hinzugefügt wird, die ausgeführt werden sollen dieser Win32-Prozess.

Wäre es möglich, dies zu tun, ohne dass RegAsm aufgerufen werden muss, bevor die C # -DLL verwendet werden kann?

    
Zoran Simic 01.12.2009, 01:20
quelle

2 Antworten

11

Sie können registrierungsfreie COM mit .NET COM-Komponenten verwenden - siehe hier .

Eine weitere Option ist die Verwendung von C ++ / CLI als Bridge. Die Leute sind meist damit vertraut, nichtverwaltete APIs mit verwaltetem Code zu versehen, aber es funktioniert tatsächlich in beide Richtungen - es ist möglich, mit /clr zu kompilieren und trotzdem eine .dll -Assembly mit reinen nicht verwalteten Exporten zu erzeugen aus dem nicht verwalteten Code wie üblich aufgerufen. Hier ist ein sehr einfaches Beispiel, das System::String::ToUpper auf diese Weise verfügbar macht:

%Vor%

Dies erzeugt wrapper.dll - hybridverwaltete / nicht verwaltete Assembly - und eine Exportbibliothek wrapper.lib . Letzteres kann in einer reinen nativen Anwendung wie folgt verwendet werden:

%Vor%

In der Praxis lädt es die CLR-Laufzeit in den aufrufenden Prozess (es sei denn, es ist bereits dort geladen) und verschicken von nativem Code zu verwaltetem Code transparent - all das geschieht durch den C ++ / CLI-Compiler.

    
Pavel Minaev 01.12.2009, 01:26
quelle
7

Es gibt zwei Möglichkeiten.

Zuerst können Sie Kostenlose COM-Registrierung für die Registrierung verwenden.

Zweitens können Sie die CLR-Hosting-APIs verwenden, um die CLR direkt zu hosten und zu laden die Versammlung. Dies funktioniert ohne COM.

    
Reed Copsey 01.12.2009 01:50
quelle

Tags und Links