程序不适用于每台计算机,它的工作位置取决于安装的Oracle客户端版本。为什么?

时间:2012-03-14 14:18:30

标签: .net oracle

我在项目中引用了Oracle.DataAccess.dll。它在我的电脑上工作正常。当它被转移到另一个同事的计算机时,它不再有效,错误是:

    The provider is not compatible with the version of Oracle client

即使将dll复制到Application目录中也是如此。所以我使用不同版本的dll编译它,它仍然可以在我的计算机上运行,​​它现在也可以在我同事的计算机上运行,​​但是在客户端的服务器上无效。

我已经搜索了很多内容,我发现的所有解决方案都很糟糕 - 它们涉及在机器上安装软件 - 我的应用程序需要在任何机器上工作,无论可能安装或不安装。有没有办法让这项工作普遍适用?

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

令人惊讶的是,我从未遇到过类似System.Data.OracleClient的问题。

2 个答案:

答案 0 :(得分:3)

除了托管的Oracle.DataAccess.dll之外,还需要将本机 OCI DLL复制到应用程序的目录中。获取这些DLL的最简单方法是通过Oracle instant client

请注意使用正确的“位”(32位DLL用于'x86'配置,64位DLL用于'x64'配置,任何位数与目标机器匹配'任何CPU'配置)。< / p>

答案 1 :(得分:1)

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