日期:2014-05-17  浏览次数:20901 次

目标平台Any CPU的ASP.NET引用64位odp.net生成网站时报错说找不到指定文件
数据库:Oracle 11.2.0.3.20 64-bit
ODAC:ODAC for Client 11.2.0.3.20 64-bit
IDE:Visual Studio 2012
操作系统:Windows 7 64-bit
目标平台:Any CPU

Web.config文件如下:
<?xml version="1.0"?>
<!--
  有关如何配置 ASP.NET 应用程序的详细信息,请访问
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5">
      <assemblies>
        <add assembly="Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89B483F429C47342"/>
      </assemblies>
    </compilation>
    <httpRuntime targetFramework="4.5"/>
  </system.web>
</configuration>

错误信息如下:
------ 已启动生成: 项目: CSWEBTEST, 配置: Debug Any CPU ------
正在验证网站
F:\TEMP\CSWEBTEST\Web.config(10): 生成 (web): 未能加载文件或程序集“Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342”或它的某一个依赖项。系统找不到指定的文件。

验证完成
========== 生成: 成功或最新 0 个,失败 1 个,跳过 0 个 ==========
但按道理来说它应该找得到的。。。如下图所示:

一眼未合眼了。。。苦思冥想,百度谷歌网页都要翻烂了都没找到问题所在。。。这个东西堵在心上快堵死我了。。。求解救
------解决方案--------------------
可能是ODP.net没有装好,重装oracle client试过了吗?

看下这篇文章:http://stackoverflow.com/questions/8531475/oracle-dataaccess-dll-can-not-be-located-though-it-exists
检查下你的程序是否运行在64位下面,注册表中的DllPath是否指向正确,Oracle client的bin目录下有没有OraOps11w.dll文件。

Oracle的安装说明也看下:http://docs.oracle.com/cd/E15296_01/doc.111/e15167/InstallODP.htm
看看Search Order for Unmanaged DLLs这段,看下这些设置是否正确,指定的目录下有没有错误或不匹配的dll