设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 创业者 手机
当前位置: 首页 > 百科 > 正文

.net – Oracle.Dataaccess在GAC中.我可以控制我使用的版本吗?

发布时间:2021-01-21 14:19 所属栏目:128 来源:网络整理
导读:我有一个使用Oracle.DataAccess(ODP.NET)的XCOPY可部署.NET应用程序.我们还在应用程序目录中部署Oracle Instant Client.一切正常,但我担心.. 来自Oracle ODP.NET FAQ: Beginning with ODP.NET 10.1.0.3,the Oracle installer will register the following p

我有一个使用Oracle.DataAccess(ODP.NET)的XCOPY可部署.NET应用程序.我们还在应用程序目录中部署Oracle Instant Client.一切正常,但我担心..

来自Oracle ODP.NET FAQ:

Beginning with ODP.NET 10.1.0.3,the Oracle installer will register
the following publisher policy DLLs in the Global Assembly Cache (GAC)
that redirect 9.2,10.1 and 10.2 ODP.NET applications to use the last
installed version of ODP.NET: Policy.9.2.Oracle.DataAccess.dll and
Policy.10.1.Oracle.DataAccess.dll

这意味着在安装了Oracle ODP.NET的计算机上,将使用GAC中的版本,而不是我在应用程序中部署的版本.并且由于发布者策略,该版本可能比我使用我的应用程序部署的版本更新. Oracle.DataAccess还需要与我的应用程序一起部署的Oracle(Instant)客户端.这些是本机Win32 DLL,因此我的版本将被使用.

Oracle是否有可能将Oracle.DataAccess升级到可能与我的应用程序部署的Oracle Instant Client不兼容的较新版本?从而打破了我将来的应用.

这是一个问题吗?我可以避免吗?如果不在机器上安装/删除任何内容,我可以覆盖Oracle Publishers策略,以保证我使用我的应用程序部署xcopy部署的Oracle.Dataaccess版本吗?

对于给定版本的ODP.NET,它支持哪些Oracle客户端版本?新版本的Oracle.DataAccess是否支持旧版本的Oracle(Instant)客户端.

解决方法

可以强制您的应用程序始终使用您想要的ODP和ODAC版本.

>强制ODP版本:使用Robert发布??的assemblyBinding技巧,强制使用您的Oracle.DataAccess版本而不是GAC版本.例如.:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Oracle.DataAccess"  culture="neutral" publicKeyToken="89b483f429c47342"/>
        <codeBase version="4.112.3.0" href="FILE://Oracle.DataAccess.dll"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

>强制ODAC版本:ODP DLL依赖于一组共享的Oracle组件(即时客户端,非托管OCI dll).获得这些的一种方法是通过ODAC包.您可以定义(基于每个应用程序),您要使用的ODAC包.传统上这是通过PATH env变量完成的,但现在可以通过config定义:

<configuration>
  <configSections>
    <section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler,System.Data,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" />
  </configSections>

  <oracle.dataaccess.client>
    <settings>
      <add name="DllPath" value="C:\somefolder\ODAC_11.2.0.3.0_32bit\bin" />
    </settings>
  </oracle.dataaccess.client>
</configuration>

>作为额外的预防措施,您始终可以删除GAC发布者策略DLL,以确保永远不会出现任何时髦.

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读