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

2024-03-09

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

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

我正在使用 .NETSystem.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 位。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET 中 32 位进程如何与 64 位进程通信? 的相关文章

随机推荐