程序并非在每台计算机上都有效,它的工作位置取决于安装的 Oracle 客户端版本。为什么?



我在项目中引用Oracle.DataAccess.dll。它在我的电脑上运行良好。当它被转移到另一位同事的电脑上时,它不再工作,错误为:

    The provider is not compatible with the version of Oracle client

即使dll被复制到Application目录中。所以我用不同版本的dll编译了它,它仍然在我的电脑上运行,现在也在我同事的电脑上工作,但在客户端的服务器上不工作。

我在谷歌上搜索了很多,发现的所有解决方案都很糟糕——它们涉及在机器上安装软件——我的应用程序需要在任何机器上运行,无论那里安装了什么或没有安装什么。有没有一种方法可以让这一点普遍适用?

编辑:如果需要安装Oracle客户端,这也是可以接受的。但挑剔版本是不能接受的。我可以选择我想要的DLL的任何版本并使用它,我想要一个在任何地方都能工作的版本。但似乎并不是这样。

令人惊讶的是,我从未在System.Data.OracleClient中遇到过这个问题,它非常相似。

除了托管Oracle.DataAccess.dll,您还需要将本机OCI dll复制到应用程序的目录中。获取这些dll的最简单方法是通过Oracle即时客户端。

只需小心使用正确的"位"("x86"配置的32位DLL,"x64"配置的64位DLL,以及与"任意CPU"配置的目标计算机匹配的任何位)。

听起来您希望应用程序使用Oracle Instant Client。您的应用程序需要将Basic或Basic Lite Instant Client软件包与ODAC软件包一起安装,并在安装过程中配置几个环境变量。

最新更新