2012-05-30 107 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

你应该接受答案,然后...... ;-) –

相关问题