我必须在VS 2005解决方案中设置一些项目才能构建到x64。项目正在使用的第三方软件需要它。
项目引用的Oracle DLL(System.Data.OracleClient.dll)驻留在Windows \ Microsoft.NET \ Framework \ v2.0.57027中 从64位项目连接到oracle时会导致问题。
Microsoft是否有理由不使用Framework64 \ v2.0.50727目录来引用System.Data.OracleClient.dll?该项目被迫构建到x64,因此逻辑上人们会认为它将使用Framework64引用。
我得到的错误是:
System.InvalidOperationException:尝试加载Oracle客户端 库扔了BadImageFormatException。当发生此问题时 使用32位Oracle客户端组件以64位模式运行 安装。 ----> System.BadImageFormatException:尝试过 用于加载格式不正确的程序。 (例外 HRESULT:0x8007000B)
每当我去添加引用时,它只引用非64位DLL。我是否需要硬引用64位System.Data.OracleClient.dll?
感谢。
答案 0 :(得分:1)
这与引用程序集没有任何关系。编译器始终使用32位程序集引用。哪个好,它只使用程序集中的元数据,对于32位和64位代码是相同的。
这里出现的问题是它在运行时中找到的程序集类型。 32位的声音。 Oracle的常见问题是,他们不喜欢出于某种原因使用GAC。它们的程序集包含非托管代码,因此无法以任何方式运行。您需要部署64位版本的Oracle提供程序或强制程序以32位模式运行。如果您无法对其进行排序,请与Oracle联系以获取支持。