【ASP.NET】ビルド環境と実行環境のODP.NETのバージョンが異なる場合に設定ファイルのみで対処する方法


自社の開発環境に新しいWebサーバーが導入されたので、現行環境で動作していたASP.NETのアプリケーションをフォルダごとコピーして動かしてみたところ、以下のようなエラーが発生しました。

ファイルまたはアセンブリ 'Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。

現行環境のOracle.DataAccess.dllのバージョンは11gだったのですが、新環境のOracleは12cが導入されていたので、DLLのバージョンが違いますよと怒られてしまいました。

ビルド環境にOracle12cのクライアントをインストールしてコンパイルし直せば良い話なのですが、残念なことにOracle12cのメディアがすぐには手に入らず、なんとかこの状態で動くようにしなければなりませんでした。

解決方法

Windowsアプリケーションでは、app.configバージョンリダイレクトの設定を追加すれば、異なるバージョンのOracleが導入されている環境でアプリを動作させることが出来ます。(旧→新の場合のみ)
同じことがASP.NETでも出来るんじゃないかと思って試してみたら出来ました。
方法はWeb.configファイルに以下の設定を書き込むだけ。
<configuration>
・
・
・
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342" />
                <bindingRedirect oldVersion="4.112.3.0" newVersion="4.122.1.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

こんな面倒な設定しなくても勝手にリダイレクトしてくれたら良いのに。

以上

>>自社で腰を落ち着けて仕事がしたい方は【社内SE転職ナビ】へ

<スポンサーリンク>


0 件のコメント :

コメントを投稿