无法加载文件或程序集“Oracle.DataAccess 错误
Posted
技术标签:
【中文标题】无法加载文件或程序集“Oracle.DataAccess 错误【英文标题】:Could not load file or assembly 'Oracle.DataAccess error 【发布时间】:2013-02-23 23:54:40 【问题描述】:我正在使用 C# 构建 ASP.NET 应用程序,我想连接到 oracle 数据库。
我在我的 64 位 Microsoft Window Server 2008 机器上的应用程序中添加了对 Oracle.DataAccess
的引用。
我还在我的机器上安装了 ODAC(Oracle 数据访问组件)
并且Oracle.DataAccess.dll
也出现在这条路径上
C:\Windows\Microsoft.NET\assembly\GAC_64\Oracle.DataAccess
但是当我尝试连接时遇到以下错误:
无法加载文件或程序集“Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342”或其依赖项之一。系统找不到指定的文件。
【问题讨论】:
您是否尝试安装 32 位版本? 不,我安装的是 64 位版本 @FelipeOriani 我该怎么办?其实我用的是64位机器。 【参考方案1】:据我所知,Oracle.DataAccess
程序集仅适用于 32 位,我也有这种 64 位的问题,它真的不起作用。我的解决方案是从 GAC 中删除 64 位并在 GAC 上安装 32 位。我还将 bin 文件夹中的任何 .dll 文件删除到我的应用程序中,找到 GAC 上的程序集。
如果你的机器和操作系统是64位的没问题,32位的版本就可以了。
更新
我建议你看一下Official Oracle ODP.NET, Managed Driver
,这是一个比Oracle.DataAccess
更好的版本。这个Managed Driver
不需要机器上的Oracle Client
,你只需要在connection string
的DataSource字段上提供TNS就可以了,32
和64
位都可以正常工作。
【讨论】:
x64 Oracle.DataAccess 程序集也可以工作,因为我只使用 x64 在另一个程序集上使用它并且工作正常。我无法确定为什么它会在我的系统中遇到。 @felipe Oriani 非常感谢你解决了我的问题。 Oracle.DataAccess 程序集有 32 位和 64 位版本,它们都可以正常工作。我用了两个版本。 它仍然出现在我的机器上。我的机器也是64位的【参考方案2】:您需要同时安装 x64 和 x86 版本的 Oracle,因为某些东西(我认为是 Visual Studio)在调试时使用 x86 版本。
【讨论】:
【参考方案3】:在 VS2010 中,我将平台目标更改为 x64,此错误消息消失了。
【讨论】:
【参考方案4】:基本相同的错误
根据我和其他回答参与者的最后一篇帖子,缺少 ODP.NET 安装组件。
你检查过 GAC 了吗?
如果您没有看到 Oracle.xxx 文件夹,
你没有取得任何进展。
将Oracle.DataAccess.dll的正确版本和位放入应用程序/BIN文件夹并进行本地引用。它解决了很多问题。
【讨论】:
我确信 Oracle.DataAccess.dll 的正确版本。我试图将参考放在本地,但遇到以下错误。无法加载文件或程序集 Oracle.DataAccess 或其依赖项之一。试图加载格式不正确的程序。【参考方案5】:要运行您的网站,您必须使用 IIS,因为 Visual Studio 的开发服务器仅在 32 位模式下运行。 在 IIS 应用程序池中,将您的应用程序设置为以 64 位运行。 (设置在高级设置中)
【讨论】:
【参考方案6】:为解决此错误,我将 IIS 中的应用程序池设置为允许 32 位应用程序。 打开 IIS 管理器,右键单击应用程序池,然后选择高级设置 --> 将“启用 32 位应用程序”设置为 True。对我来说效果很好。
【讨论】:
【参考方案7】:我在 C# 控制台应用程序上遇到了同样的异常。为我解决的问题是将平台目标更改为 x86。 (项目属性 => 构建)
【讨论】:
以上是关于无法加载文件或程序集“Oracle.DataAccess 错误的主要内容,如果未能解决你的问题,请参考以下文章
无法加载文件或程序集 'PayPalAdaptivePaymentsSDK,版本 = 2.12.117.0
无法加载文件或程序集。找到的程序集的清单定义与程序集引用不匹配
无法加载文件或程序集'netstandard,版本 = 2.0.0.0