“尝试加载Oracle客户端库时抛出BadImageFormatException异常。当以64位模式运行且安装了32位Oracle客户端组件时,将出现此问题。”
为解决这个问题,我将构建目标定向为x86平台。
令我惊讶的是,在尝试在Win7平台上执行该新构建时,出现了完全相同的错误消息。
NHibernate程序集通过Assembly.Load("...");
在运行时加载。
可能是NHibernate DLL仍在64位模式下运行,而主机exe在32位模式下运行。这对我来说听起来很奇怪。或者可能是由于某种原因,我的应用程序在64位模式下运行,即使它是针对x86目标的也是如此?
更新:
我使用 CorFlags 检查了我的二进制文件,发现它标记为 32 位:
Microsoft (R) .NET Framework CorFlags Conversion Tool. Version 4.0.30319.1
Copyright (c) Microsoft Corporation. All rights reserved.
Version : v2.0.50727
CLR Header: 2.5
PE : PE32
CorFlags : 3
ILONLY : 1
32BIT : 1
Signed : 0
我还在任务管理器中检查了它,发现它有一个*32的后缀。
我还尝试使用CorFlags为我的应用程序中的所有程序集添加32位标志。但仍然出现相同的错误信息。
我很困惑...很困惑...很困惑...