Wie kann ein 32-Bit-Prozess mit einem 64-Bit-Prozess in .NET kommunizieren?
Windows macht es nicht möglich, dass ein 32-Bit-Prozess eine 64-Bit-DLL lädt. Daher versuche ich, Remoting zu verwenden, damit der 32-Bit-Prozess mit einem 64-Bit-Prozess interagieren kann.
Hier ist das Problem: Während sich die beiden Anwendungen auf demselben Computer befinden, ist eine 32-Bit- und die andere 64-Bit-Version, und das muss so sein: Wenn Sie beide 32-Bit- oder 64-Bit-Versionen verwenden, wird alles, was diese Anwendungen aufbauen, beschädigt von.
Ich verwende die .NET-Klasse System.Runtime.Remoting.RemotingConfiguration und rufe deren Configure () -Methode auf und übergebe einen Verweis auf eine App.config-Datei, die auf die MarshalByRefObject-Klasse verweist, auf die ich über Remoting zugreifen werde.
Ich habe es zum Laufen gebracht, aber nur solange Client, Host, MarshalByRefObject-Klasse entweder 32-Bit oder 64-Bit sind. Wenn ich sie vertausche, funktioniert das nicht: Ich bekomme eine BadImageFormatException:
Datei oder Assembly 'MyRemotingObject' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Es wurde versucht, ein Programm mit einem falschen Format zu laden.
Die Ausnahme verschwindet, sobald ich beide Apps entweder 32-Bit oder 64-Bit mache, aber wieder muss eine davon 32-Bit und die andere 64-Bit sein.
Kann mir jemand sagen, wie die Interprozesskommunikation zwischen einer 32-Bit-.NET-App und einer 64-Bit-.NET-App aktiviert wird?