在x-64机器上加载Oracle.DataAccess.Dll问题

bin*_*inu 3 .net oracle dll

我有一个.net exe程序,它使用的是Oracle.DataAccess,Version = 2.121.1.0 dll.我的开发机器和tfs构建服务器都是32位的.在32台机器上一切正常.但是现在我必须在x64(Windows Server 2012 R2)上迁移这个程序,我的所有问题都从那里开始.我收到着名的错误无法加载文件或程序集'Oracle.DataAccess,Version = 2.121.1.0,Culture = neutral,PublicKeyToken = 89b483f429c47342'或其依赖项之一..

我google了很多,并尝试了迄今为止的各种事情:

  1. 通过更改项目属性Compile选项,专门构建可执行目标X86平台
  2. 我已在机器上安装了Oracle dll,并且已在GAC中成功注册
  3. 试图构建可执行文件以"任何CPU"为目标,当它不起作用时也尝试了X64
  4. 在app.config文件中专门提供了程序集绑定信息,以查看加载dll的确切位置.
  5. 打开Fusion日志以查看确切的故障原因

请参阅下面的错误日志:

29/01/2015 10:57:30; ALERT; System.Exception捕获在Main()29/01/2015 10:57:30;错误; System.BadImageFormatException:无法加载文件或程序集'Oracle.DataAccess,Version = 2.121.1.0,Culture = neutral,PublicKeyToken = 89b483f429c47342'或其依赖项之一.尝试加载格式不正确的程序.文件名:'Oracle.DataAccess,Version = 2.121.1.0,Culture = neutral,PublicKeyToken = 89b483f429c47342'位于XXXX.Common.Components.OraDataAccess..ctor()位于XXXX.Library.ValuesCore.ValuesCore..ctor()位于XXXX .Library.DerivationsCore.Derivations..ctor()at XXXX.Processes.XXXX.Main.Main()===预绑定状态信息=== LOG:User = XX LOG:DisplayName = Oracle.DataAccess,Version = 2.121 .1.0,Culture = neutral,PublicKeyToken = 89b483f429c47342(完全指定)LOG:Appbase = file:/// D:/ Release/LOG:Initial PrivatePath = NULL调用程序集:XXXX.CommonComponents,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = e9b31bf34182bd8b.===日志:此绑定在默认加载上下文中启动.日志:使用应用程序配置文件:D:\ Release\XXXX.exe.Config日志:使用C:\ Windows\Microsoft.NET\Framework64\v2.0.50727\config\machine.config中的计算机配置文件.日志:后策略引用:Oracle.DataAccess,Version = 2.121.1.0,Culture = neutral,PublicKeyToken = 89b483f429c47342日志:尝试下载新的URL文件:/// C:/Oracle/odp.net/bin/2.x /Oracle.DataAccess.dll.错误:无法完成程序集的设置(hr = 0x8007000b).探测终止.29/01/2015 10:57:30;错误;无法加载文件或程序集'Oracle.DataAccess,Version = 2.121.1.0,Culture = neutral,PublicKeyToken = 89b483f429c47342'或其依赖项之一.尝试加载格式不正确的程序.29/01/2015 10:57:30;警报;(全局)点源ID = 0,计算时间= 29/01/2015 10:57:30.29/01/2015 10:57:30;停止;

绝对需要任何帮助,我们将不胜感激.

谢谢

Wer*_*eit 8

Oracle.DataAccess.dll的体系结构(x86或x64)必须与已安装的Oracle客户端的体系结构相匹配,并且它们必须与已部署应用程序的体系结构相匹配(即,您是否在"AnyCPU"或"x86"或"x64"编译) ).

"AnyCPU"将在64位Windows上以x64为目标.

最好的解决方案是在您的计算机上安装x86和x64 Oracle客户端(以及根据ODP.NET),然后任何组合都可以使用.以下是如何执行此操作的说明:安装Oracle x86和x64

一个替代解决方案是使用ODP.NET托管驱动程序,这在任何情况下都适用.您可以从此处下载:64位Oracle数据访问组件(ODAC)下载