我可能在这里问错了问题,如果是这样的话,我愿意改变它。
我有一个使用Microsoft.NET Oracle提供程序的项目(我们的计划是改为ODP,但我们还没有这样做)。
我试图让这个项目在windows 2008(x64)build服务器上构建。它构建得很好,但是我们的单元测试在遇到Oracle数据库上的东西时失败了。
我最初安装的是32位oracle 9i客户端,这是我们目前在winxp开发环境和以前的2003 build服务器上使用的客户端。尝试加载Oracle客户端库时引发了BadImageFormatException。在安装了32位Oracle客户端组件的64位模式下运行时将出现此问题。
我们尝试编译到x86平台,但没有更改错误消息。
我现在安装了11g 64位客户端,但我收到一条消息,说System.Data.OracleClient需要Oracle客户端软件版本8. 1. 7或更高版本。
那么,我应该使用哪种Oracle安装呢?
编辑:
我能够让这个工作。原来是测试导致了问题,通过强制NUnit在32位模式下运行:Link我能够让测试工作使用旧的32位驱动程序。这将是一个蹩脚的答案的问题,所以我不使用它,但会很高兴地奖励正确的答案,任何人把一些好的信息过渡到Oracle 64位驱动程序。
6条答案
按热度按时间yr9zkbsy1#
对于Oracle,我喜欢使用Oracle Instant Client:
查看将C#连接到Oracle数据库所需的最小客户端占用空间是多少?以了解更多信息。要了解如何设置一个在x86和x64计算机上都能工作的Visual Studio项目,请查看我的博客文章Oracle Instant Client in Visual Studio。
bvjxkvbb2#
我添加了一个新的答案,因为自今年秋天(2012年)起,ODP托管代码测试版已经推出。请参阅this link了解更多信息。它对我们来说非常稳定,我们正在生产中使用它,主要原因如下:
但要转换到64位,请下载托管ODP驱动程序,并将
Oracle.DataAccess
引用更改为Oracle.ManagedDataAccess
,然后重新编译:)bjp0bcyl3#
我认为消息 “System.Data.OracleClient需要Oracle客户端软件版本8.1.7或更高版本” 类似于 “Oracle客户端未安装、已安装但未找到或已安装但需要8.1.7或更高版本”。
检查注册表编辑器上的值是否位于注册表项下:
其中
OraOdac11g_home1
取决于安装的Oracle主目录名。此外,尝试通过Visual Studio连接,看看是否可能。
flvlnr444#
我有一个问题,可能与你所看到的有关。
我最初在计算机上只安装了Oracle 10 g客户端,.Net Oracle.DataAccess组件版本号是10.2.0.100-这是针对.Net运行时v1.0.3705的
我安装了ODP .NET,Oracle.DataAccess组件版本现在是v2.102.2.20,并在.Net运行时v2.0.50727上运行-我找不到Oracle为什么这样做的参考-这与使版本号与运行时版本一致有关
我花了一天的时间来解决这个问题。我们还没有使用11 g客户端,我也很久没有使用8i客户端了,所以我不知道这些客户端的版本号是什么,但如果我是你的话,我会检查一下。
简而言之,Oracle回溯了组件版本号,这可能会使您的11 g组件显得过时,而不是Oracle 8i组件
lhcgjxsq5#
我多次发现错误“需要Oracle客户端软件版本8.1.7或更高版本”是一个众所周知的误导性错误。从遥远的记忆中,我似乎记得这通常表示文件IO权限问题。我认为这可能是ASP.NET工作进程(或应用程序运行所使用的任何身份)需要对Oracle客户端文件夹层次结构中的文件夹具有某种读或写权限...
oyjwcjzk6#
这可能是环境中存在多个Oracle主目录的原因。请删除构建系统中的旧版本Oracle主目录。尝试使用单个主目录重新生成构建。9 i版本ODP.NET和10 G/11 G连接存在一些问题