无法在.NET中为Oracle.DataAccess加载文件或程序集

Chr*_*ris 28 .net oracle assemblies

当我尝试运行一个简单的程序来访问oracle时,我收到了这条消息

无法加载文件或程序集'Oracle.DataAccess,Version = 2.111.7.20,Culture = neutral,PublicKeyToken = 89b483f429c47342'或其依赖项之一.该系统找不到指定的文件.

我检查了\ windows\assembly它在那里,但它不在GAC(gacutil -l)中.我无法添加到GAC中(gacutil -i [path]我得到'未知错误'.

任何人都有同样的体验?

小智 24

我将在Windows Server 2008 R2(64位操作系统)上为您提供答案.我给出的库应用程序套件是使用.net 3.5 x86与较旧的DLL库开发的,因为我从oracle安装了较新的x64客户端而被卡住了.

我发现如下:从Oracle for Windows Server 2008安装最新的x64客户端.我相信这将是2.7.0客户端.选择安装时,请确保自定义并选择.NET库.配置您的tnsnames文件并根据您的数据源测试您的tnsping.

接下来,如果您运行的是32位应用程序,请为32位安装相同版本的客户端.此外,请遵循相同的安装例程,并选择相同的主页.

完成后,您会发现您有一个具有两个客户端目录的应用程序/产品(Client1和Client2).

如果你导航到windows/assemblies目录,你会发现你有一个对Oracle.DataAccess.dll(x2)的引用,其中一个用于x86,一个用于AMD64.

现在,根据您是否有开发人员或者您自己在机器上进行开发,您可能会在这里确定,但是,如果他们使用较旧的驱动程序,那么您需要执行最后一步.

导航到app \name\product\version\client_1\odp.net\publisher policy\2.x目录.这里包括两个策略文件.使用gacutil/i将Policy.2.111.Oracle.DataAccess.dll安装到GAC中.这会将旧版oracle ODP调用重定向到较新版本.因此,如果有人使用10g客户端开发,它现在将与11客户端一起使用.

仅供参考 - 有些人可能正在使用2.111.7.20安装最新的ODP.NET.主要的oracle客户端本身带有2.111.7.0 ..我在7.20上没有任何成功但是7.0客户端没有问题.


Luc*_*s B 7

我正在使用x64进行编译,只需使用x86即可解决问题

  • 是的,你可以说这样做可以解决问题,但是在 x64 中编译没有任何错误,我想以这种方式运行它,现在我的计算机中有大量的 Oracle.DataAccess.dll 和 oracle 客户端,我所能做的就是做到这一点run 正在针对 x86 进行编译。甲骨文正在做某事。错误的。!!! (2认同)