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

时间:2012-05-30 19:27:17

标签: .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文件,该文件引用我将通过远程处理访问的MarshalByRefObject类。

我让它工作,但只有当Client,Host,MarshalByRefObject类是32位或64位时。如果我混淆它们将不起作用:我最终会得到一个BadImageFormatException:

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

只要我将这两个应用程序设置为32位或64位,异常就会消失,但同样,其中一个应该是32位而另一个必须是64位。

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

2 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:3)

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

这里有一个简单的例子: http://msdn.microsoft.com/en-us/library/system.servicemodel.netnamedpipebinding.aspx