ASP.NET Orace.DataAccessのバージョンの違いでエラーになるときの対処法
Oracle.DataAccess.dll
のバージョンの違いにより、以下のエラーが発生しました。
ファイルまたはアセンブリ 'Oracle.DataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342'、またはその依存関係の 1 つが読み込めませんでした。見つかったアセンブリのマニフェスト定義はアセンブリ参照に一致しません。 (HRESULT からの例外:0x80131040)
例えば開発環境にインストールされたOracleClient
と本番環境にインストールされたOracleClient
のバージョンが異なるとき、開発環境でビルドしたシステムを本番環境で動かす場合に上記のエラーが発生します。
対処法
バージョンリダイレクトという機能を利用します。
web.config
に以下を追記します。
例えば開発環境のOracle.DataAccess
のバージョンが4.121.2.0
で、本番環境のバージョンが4.121.1.0
のとき、開発環境でビルドしたシステムを本番環境で動かしたい場合は、本番環境のweb.config
に以下を追記します。
web.config
<configuration>
<!--既存の設定が記述-->
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342"/>
<bindingRedirect oldVersion="4.121.2.0" newVersion="4.121.1.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>