.NET 中 32 位程序如何與 64 位程序通信?
Windows 無法讓 32 位程序載入 64 位 dll,因此我嘗試使用遠端處理以允許 32 位程序與 64 位程序互動。
問題是:雖然這兩個應用程序位於同一台機器上,一個是 32 位,另一個是 64 位,它們必須是這樣的:同時使用 32 位或 64 位會破壞這些應用程序建構在上面的一切的。
我正在使用.NET 的
System.Runtime.Remoting.RemotingConfiguration類並呼叫它的Configure()方法並將引用傳遞給一個App.config文件,該文件引用MarshalByRefObject我將通過遠端訪問訪問的類。我讓它工作,但只要 Client、Host、MarshalByRefObject 類是 32 位或 64 位。如果我把它們混合起來,這將不起作用:我最終會得到
BadImageFormatException:無法載入文件或程序集“
MyRemotingObject”或其依賴項之一。試圖載入格式不正確的程序。一旦我將兩個應用程序都設為 32 位或 64 位,異常就會消失,但同樣,其中一個必須是 32 位,另一個必須是 64 位。
有人能告訴我如何啟用 32 位 .NET 應用程序和 .64 位 .NET 應用程序之間的程序間通信嗎?
隨機猜測:.NET 遠端處理需要將程序集載入到兩個程序中以獲取元數據。您的數據協定(使用 WCF 術語)應位於單獨的程序集中,並且應編譯為“AnyCPU”,以便可以將其載入到任一程序中。您已將其明確設置為 32 位或 64 位。
您可以通過命名管道使用 WCF。
這裡有一個簡單的例子:http: //msdn.microsoft.com/en-us/library/system.servicemodel.netnamedpipebinding.aspx