当它运行的系统肯定是64位系统时,从AnyCpu dll引用x64-dll是一个有效的方案吗?
我问,因为我在这里遇到问题,得到如下例外:
"无法加载文件或程序集' XY'或其中一个依赖项。尝试加载格式不正确的程序"
在过去的几年里,我曾多次使用不同的解决方案解决了这个问题。有时它似乎工作,有时不工作。
答案 0 :(得分:3)
AnyCPU
程序集以x64 DLL为目标是完全有效的。但是,您可以确保您的AnyCPU
程序集实际上是作为x64进程执行的。
请注意,Visual Studio的更高版本添加了"首选32位"程序集选项。所以你需要确保关闭它,并且你没有使用机器上任何覆盖该设置的设置。
另请注意,如果您的AnyCPU
程序集引用了目标计算机上仅可用作x86程序集的其他程序集,则它将作为x86进程运行。
坦率地说,如果您知道您希望该进程仅以x64运行,那么将其编译为x64
是最有意义的。至少在这种情况下,如果您最终在不兼容的环境中运行它,您将获得更好的错误消息(即事件日志将包含与您的进程不兼容的依赖关系的信息,而不是其他一些实际上符合预期的依赖)。