zukucode
主にWEB関連の情報を技術メモとして発信しています。

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>

関連記事