アプリケーションに、必要なODPおよびODACバージョンを常に使用するように強制することができます。
-
ODPバージョンを強制する:Robertによって投稿されたassemblyBindingトリックを使用して、GACのバージョンの代わりにOracle.DataAccessのバージョンを強制的に使用します。例:
<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)に依存します。これらを取得する1つの方法は、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をいつでも削除して、ファンキーなことが起こらないようにすることができます。