【发布时间】:2019-09-18 21:01:10
【问题描述】:
我目前正在使用 C# 开发一个独立的应用程序,但我遇到了一个我找不到解决方案的问题。实际上,我的脚本使用了两个库(由外部公司提供),但是,一个用于 64 位系统,另一个用于 32 位系统。所以这是我的问题,一旦我尝试同时使用这两个库,我总是会得到一个错误:
System.BadImageFormatException
我已经尝试为“Any CPU”、“x64”和“x86”构建我的项目,但我总是遇到同样的问题。
所以我想知道是否有可能解决这个问题以便能够在同一个脚本中使用这两个库,或者是否有其他技术可以达到相同的结果?
提前谢谢你, 克莱门特
【问题讨论】:
-
您必须为这两个进程启动不同的进程并将各自的程序集加载到每个进程中,然后找出两者之间的通信。 无法将 32 位和 64 位程序集加载到同一进程中。
-
另一种方法是联系供应商,看看是否有办法让他们提供所有这些程序集的 32 位或 64 位版本,这样您就不会必须跳过箍来加载它们。
-
不幸的是,提供这些库的公司最近关闭了......如果我开始在 A 脚本(64 位)中处理第一个库,然后使用 B 脚本(86 位),结果可能是决定性的?
-
可能,尝试通过 TCP 实现客户端-服务器的 DLL-as-a-service 方法。服务器为您的库运行 32 位包装器,您向他询问操作。手动、gRPC、SignalR、WCF 等