Oracle.DataAccess.dll提供程序和DLL不兼容

时间:2016-02-19 22:12:34

标签: c# oracle dll oracle11g

我最近担任应用程序开发人员,没有太多经验,我无法确定问题的根源。我在论坛上搜索过,无法对我的具体问题得出结论性答案,因此我提出了一个问题。如果我冒犯任何人或违反任何规则,我会事先道歉,因为我是这个网站的新手。

我有几个需要使用oracle.dataaccess.dll的应用程序。我按照雇主的要求安装了oracle客户端x32。当我尝试运行任何需要oracle.dataaccess.dll文件的应用程序时,我遇到了不同的错误。

大多数应用程序使用dll的4.xx.xx.xx版本,这对我的oracle客户端没有出现(我假设它是因为我安装了32位)。当我尝试使用32位版本时,我遇到了各种错误:

  1. 提供程序与Oracle客户端版本不兼容
    1. 无法加载文件或程序集。 ' Oracle.DataAccess.dll'或其中一个依赖。试图加载一个格式不正确的程序。
      1. 可能未安装提供程序。
      2. 如果我尝试使用生产服务器上使用的oracle.dataaccess.dll,我会收到相同的错误。

        1. 什么是'提供商'我怎样才能弄清楚我安装了哪一个?

        2. 我是否应该将这些dll存储在我的GAC中?

        3. 我完全不知道从哪里开始,因为我已经尝试了所有我知道的东西。我甚至卸载了我的Oracle客户端并重新安装无济于事。请注意,任何可以指向我的教程或如何使用oracle.dataaccess的信息都将非常感激。

        4. 我再次为任何麻烦事先道歉。

1 个答案:

答案 0 :(得分:1)

一些通用观点:

  • ODP.NET(即Oracle.DataAccess.dll)需要安装Oracle客户端。独立DLL不起作用。
  • Oracle.DataAccess.dll的体系结构(即32位与64位)必须与已安装的Oracle客户端的体系结构和应用程序的体系结构相匹配。
  • 版本(例如2.x4.x Oracle.DataAccess.dll)必须与应用程序的.NET编译目标匹配。如果在目标2.0,3.0或3.5上进行编译,则必须安装版本2.x。对于编译目标4或更高版本,您必须安装版本4.x
  • 版本(例如x.111x.112x.121等)应与已安装的Oracle客户端版本相匹配。

关于你的问题:

提供程序是DLL Oracle.DataAccess.dll。它可以是应用程序二进制文件夹中的本地副本,也可以安装在GAC中。

您是否使用GAC并不重要。我个人更喜欢使用GAC,但您也可以提供本地副本。

您可以使用gacutil.exe工具查询已安装的提供商:

C:\>gacutil /l Oracle.DataAccess
Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.18020
Copyright (c) Microsoft Corporation.  All rights reserved.

The Global Assembly Cache contains the following assemblies:
  Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
  Oracle.DataAccess, Version=2.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
  Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86
  Oracle.DataAccess, Version=2.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86
  Oracle.DataAccess, Version=2.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86
  Oracle.DataAccess, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
  Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
  Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86

Number of items = 8

C:\>