首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法加载文件或程序集"Oracle.DataAccess“或其依赖项之一

无法加载文件或程序集"Oracle.DataAccess“或其依赖项之一
EN

Stack Overflow用户
提问于 2013-09-13 14:21:57
回答 13查看 172.3K关注 0票数 45

我正在尝试运行此web应用程序。我一直收到这样的错误:“无法加载文件或程序集"Oracle.DataAccess”或它的依赖项之一。试图加载格式不正确的程序。“异常详情: System.BadImageFormatException。无法加载文件或程序集"Oracle.DataAccess“或其依赖项之一。试图加载格式不正确的程序。下面是我已经尝试过的东西。

  1. 用32位oracle dll替换了所有oracle dll,即2.112.3.0

我有安装在64位机器上的32位客户端。操作系统是windows7。

  1. 单独编译每个单独的项目。删除所有oracle相关文件dll,然后单独添加2.112.3.0dll,然后编译每个项目

使用以下语句gacutil

  • %ORA_HOME4%\odp.net\bin\4\Oracle.DataAccess.dll

在GAC上注册32位

gacutil /i %ORA_HOME4%\asp.net\bin\4\oracle.web.dll

对于上述两个语句,我将驱动器从c:\Program Files(x86)\Microsoft sdk\windows\v7.0A\Bin\NETFX4.0 Tools\X64复制到C:\ gacutil.exe,然后

我执行了上面的两条语句:

gacutil %ORA_HOME4%\odp.net\bin\4\Oracle.DataAccess.dll /i gacutil /i %ORA_HOME4%\asp.net\bin\4\oracle.web.dll当我执行上述两条语句时,我没有收到任何消息,我是在Dos窗口中以管理员权限执行它们的。

  1. I还删除了此位置的所有临时ASP.net文件

c:\windows\Microsoft.Net\V4.0.30319\temporary ASP.net files我还将web应用程序构建平台目标更改为X86,最初的目标是"ANy CPU“。出于沮丧,我还尝试将平台目标更改为X64,然后收到错误消息

“Cold not load file或assemble .webapp”或其依赖项之一。试图加载格式不正确的程序。

我的计算机上没有安装IIS,我在visual studio 2010中运行此应用程序,因此我认为它将使用visual studio附带的内置IIS。

我花了很多时间来解决这个问题,但仍然一次又一次地得到相同的错误。

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2016-07-28 21:20:58

当我从一台机器移动到另一台机器并重新安装所有东西时,我又遇到了这个问题。在我的例子中,我同时使用32位和64位的Oracle ODP.NET安装。

当在我的新机器上列出程序集时,我得到了以下列表

代码语言:javascript
复制
 C:\oracle\product\11.2.0\X64\odp.net\bin\4>gacutil /l|findstr Oracle.DataAccess
     Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
     Policy.2.102.Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
     Policy.2.111.Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
     Policy.2.112.Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
     Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
     Policy.4.112.Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64

这里只能看到64位的DLL。

我在web.config上看不到它,但我使用的是32位版本。

当我用GACutil检查我的旧机器时,我看到了更多的DLL,还有X86的。

通过重新应用注册过程修复(此处引用的x32/x64版本)

代码语言:javascript
复制
OraProvCfg.exe /action:gac /providerpath:C:\oracle\product\11.2.0\x32\ODP.NET\bin\4\Oracle.DataAccess.dll

OraProvCfg.exe /action:gac /providerpath:C:\oracle\product\11.2.0\x64\ODP.NET\bin\4\Oracle.DataAccess.dll

在那之后,Visual Studio是一只快乐的兔子,为我重新编译了所有的东西。

票数 4
EN

Stack Overflow用户

发布于 2014-01-16 07:13:40

尝试这样做:打开IIS管理器,更改应用程序池的高级设置,将启用32位应用程序更改为false。

票数 41
EN

Stack Overflow用户

发布于 2014-09-05 18:58:18

我通过以下步骤找到了解决方案:

  • 删除Oracle.DataAcces.dll引用,

并将新的引用添加到:

C:\windows\assembly\GAC\Oracle.DataAccess\X.XXX.X.XX__89b483f429c47342/oracle.dataaccess.dll

  • Make本地copy=为false。

希望能有所帮助

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18779518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档