卸载后,Oracle.DataAccess仍尝试访问oraops12.dll

时间:2015-01-07 15:50:13

标签: odp.net oracleclient

首先,我的机器上有11和12个oracle客户端。但是当我尝试使用11g版本的oracle.dataacess.dll时。

我已经在regedit上删除了12c寄存器并停止了服务和machince.config相关。 但该程序被抛出"无法加载oraops12.dll .."。

oracle.dataacess找到dll配置的路径是什么? 为什么它仍然试图加载oraops12而不是oraops11。

提前谢谢。

3 个答案:

答案 0 :(得分:8)

您的GAC中有一个策略文件正在使用" bindingRedirect"标签

Policy.2.112.Oracle.DataAccess.config

搜索文件(我使用Agent Ransack)然后编辑它。

文件内容如下所示

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89B483F429C47342"/>
            <bindingRedirect oldVersion="2.112.2.0-2.112.9999.9999" newVersion="2.121.1.0"/>
        </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>

出于某种原因,如果您安装Oracle 12,然后尝试卸载它(即使使用gacutil.exe / u),绑定重定向也会保留。

在我的机器上,它位于C:\ Windows \ assembly \ GAC_32 \ Policy.2.112.Oracle.DataAccess \ 2.121.2.0__89b483f429c47342 \ Policy.2.112.Oracle.DataAccess.config

通过资源管理器无法访问,使用代理搜索功能来跟踪它,然后右键单击它并在编辑器中打开它。

答案 1 :(得分:2)

我刚遇到这个问题。确保并删除c:\ windows \ assembly和c:\ windows \ Microsoft.net \ assembly中以2.12开头的所有策略文件夹和oracle.dataaccess文件夹。 2.11x表示oracle 11.x,2.12x表示Oracle 12.x。

答案 2 :(得分:0)

我在Windows Server 2012中遇到了同样的问题......

我解决了只有C++ Redistributable Package 2010

的所有事情