当它将运行的系统肯定是 64 位系统时,从 AnyCpu dll 引用 x64-dll 是否有效?
我在问,因为我在这里遇到问题,得到如下异常:
“无法加载文件或程序集‘XY’或其依赖项之一。试图加载格式不正确的程序”
在过去的几年里,我用不同的解决方案多次遇到这个问题。有时它似乎有效,有时则无效。
AnyCPU
程序集以 x64 DLL 为目标是完全有效的。但是,您需要确保您的AnyCPU
程序集实际上是作为 x64 进程执行的。
请注意,更高版本的 Visual Studio 已向程序集添加了“首选 32 位”选项。因此,您需要确保将其关闭,并且您没有在机器上使用任何会覆盖该设置的设置。
另请注意,如果您的AnyCPU
程序集引用了在目标计算机上可能仅作为 x86 程序集可用的其他程序集,它将作为 x86 进程运行。
坦率地说,如果您知道您希望该进程仅作为 x64 运行,恕我直言,将其编译为x64
. 至少这样,如果您最终在不兼容的环境中运行它,您将收到更好的错误消息(即事件日志将包含有关与您的进程不兼容的依赖项的信息,而不是一些其他依赖项的信息实际上和预期的一样)。