2012-05-30 142 views
6

Windows不能使32位進程加載64位dll,所以我試圖使用遠程處理以允許32位進程與64位進程交互。在.NET中,32位進程如何與64位進程通信?

問題出在這裏:當兩個應用程序位於同一臺機器上時,一個是32位,另一個是64位,它們必須是這樣:使32位或64位都會打破這些應用程序的一切建立在頂部。

我正在使用.NET的System.Runtime.Remoting.RemotingConfiguration類並調用它的Configure()方法,並將引用傳遞給引用MarshalByRefObject類的App.config文件,該類將通過遠程訪問進行訪問。

我得到它的工作,但只有客戶端,主機,MarshalByRefObject類是32位或64位。如果我將它們混合起來,這將不起作用:我將以BadImageFormatException異常結束:

無法加載文件或程序集「MyRemotingObject」或它的某個依賴項。試圖加載格式不正確的程序。

只要我將兩個應用程序都設置爲32位或64位,異常就會消失,但同樣,其中一個必須是32位,另一個必須是64位。

有人能告訴我如何啓用32位.NET應用程序和.64位.NET應用程序之間的進程間通信?

+0

遠程處理不是你的朋友在這裏;使用簡單的東西 - 也許是一個基本的套接字服務器 –

+0

爲什麼不把他們全部32位或全部64位?這兩者混合的意義何在? –

回答

8

隨機猜測:.NET遠程需要的組件加載到這兩個進程,以獲得元數據的保持。你的數據契約(使用WCF術語)應該在一個單獨的程序集中,並且應該被編譯爲「AnyCPU」,以便它可以被加載到任何一個進程中。你已經明確設置爲32位或64位。

+0

你是對的!將主機設置爲64位,將客戶機設置爲32位,並將數據合同設置爲ANY CPU即可解決問題!謝謝! –

+2

你應該接受答案,然後...... ;-) –

相關問題