.net – Oracle.Dataaccess在GAC中.我可以控制我使用的版本吗?
我有一个使用Oracle.DataAccess(ODP.NET)的XCOPY可部署.NET应用程序.我们还在应用程序目录中部署Oracle Instant Client.一切正常,但我担心.. 来自Oracle ODP.NET FAQ:
这意味着在安装了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:somefolderODAC_11.2.0.3.0_32bitbin" /> </settings> </oracle.dataaccess.client> </configuration> >作为额外的预防措施,您始终可以删除GAC发布者策略DLL,以确保永远不会出现任何时髦. (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |