在.NET中,32位进程如何与64位进程通信?

在.NET中,32位进程如何与64位进程通信?,.net,64-bit,ipc,remoting,32-bit,.net,64 Bit,Ipc,Remoting,32 Bit,Windows不允许32位进程加载64位dll,因此我尝试使用远程处理来允许32位进程与64位进程交互 问题是:虽然这两个应用程序位于同一台机器上,但一个是32位,另一个是64位,而且它们必须是这样:同时使用32位或64位会破坏这些应用程序所构建的一切 我正在使用.NET的System.Runtime.Remoting.RemotingConfiguration类并调用其Configure()方法,并传递对App.config文件的引用,该文件引用我将通过Remoting访问的MarshalBy

Windows不允许32位进程加载64位dll,因此我尝试使用远程处理来允许32位进程与64位进程交互

问题是:虽然这两个应用程序位于同一台机器上,但一个是32位,另一个是64位,而且它们必须是这样:同时使用32位或64位会破坏这些应用程序所构建的一切

我正在使用.NET的System.Runtime.Remoting.RemotingConfiguration类并调用其Configure()方法,并传递对App.config文件的引用,该文件引用我将通过Remoting访问的MarshalByRefObject类

我已经让它工作了,但只有当长客户机、主机、MarshalByRefObject类是32位或64位时。如果我把它们混在一起,这是行不通的:我最终会遇到一个BadImageFormatException:

无法加载文件或程序集“MyRemotingObject”或其依赖项之一。试图加载格式不正确的程序

当我将两个应用程序都设置为32位或64位时,例外情况就会消失,但同样,其中一个必须是32位,另一个必须是64位


有人能告诉我如何在32位.NET应用程序和64位.NET应用程序之间启用进程间通信吗?

您可以通过命名管道使用WCF

这里有一个简单的例子:

随机猜测:.NET远程处理需要将程序集加载到两个进程中以获取元数据。您的数据契约(使用WCF术语)应该位于单独的程序集中,并且应该编译为“AnyCPU”,以便可以将其加载到任一进程中。您已将其显式设置为32位或64位。

远程处理在这里不是您的朋友;使用更简单的东西-可能是一个基本的套接字服务器。为什么不让它们都是32位或64位呢?把这两者混合在一起有什么意义?你说得对!将主机设置为64位,将客户端设置为32位,并将数据协定设置为任何CPU都可以解决此问题!非常感谢。