当系统是64位时,从AnyCpu dll引用x64-dll是否是有效的场景?
我之所以问这个问题,是因为我在这里遇到了一些问题,会出现以下异常:
"无法加载文件或程序集“XY”或它的某一个依赖项。尝试加载格式不正确的程序。"
在过去的几年中,我遇到了很多次这个问题,有时候看起来可以解决,有时候则不行。
当系统是64位时,从AnyCpu dll引用x64-dll是否是有效的场景?
我之所以问这个问题,是因为我在这里遇到了一些问题,会出现以下异常:
"无法加载文件或程序集“XY”或它的某一个依赖项。尝试加载格式不正确的程序。"
在过去的几年中,我遇到了很多次这个问题,有时候看起来可以解决,有时候则不行。
AnyCPU
程序集可以完全针对x64 DLL目标,但是需要您确保您的AnyCPU
程序集实际上作为x64进程执行。请注意,Visual Studio的后续版本已添加了"优先使用32位"选项以进行程序集。因此,您需要确保关闭此选项,并且您没有使用机器上的任何设置来覆盖该设置。还要注意,如果您的AnyCPU
程序集引用其他可能仅作为目标机器上的x86程序集可用的程序集,它将被运行为x86进程。
老实说,如果您知道您希望该过程仅作为x64运行,那么在我看来,将其编译为x64
最有意义。至少这样,如果您最终在不兼容的环境中运行它,则会收到更好的错误消息(即事件日志将包含与您的进程不兼容的依赖关系的信息,而不是某个其他依赖关系实际上是如预期所述的依赖关系)。