[Oracle]Oracle.DataAccess.dllの参照について(.NET2.0/3.5)
サーバー移行によるOSの変更に伴い、Oracleのバージョンを11gから19cに変更した。すると、.NET2.0、または、3.5で作成されたサーバーサイドのアプリケーションがエラーを出力するようになった。
メッセージの内容は、
「ファイルまたはアセンブリ名'Oracle.DataAccess'、またはその依存関係の1つが読み込めませんでした。指定されたファイルが見つかりません。」
というようなもの。
調べてみると、GACに手動での登録が必要なことがわかった。
以下、やったことのメモ
1) GAC登録用のOraProvCfg.exeがあるディレクトリへ移動
cd /d Oracle_Clientのルートディレクトリ\ODP.NET\bin\2.x
2) Oracle.DataAccess.dllをGACへ登録
oraprovcfg /action:gac /providerpath:Oracle_Clientのルートディレクトリ\ODP.NET\bin\2.x\Oacle.DataAccess.dll
3) これまではOracle.DataAccessのバージョンの微妙な違いで、アプリケーションやWEBのconfigファイルにバージョンのリダイレクト設定をしていたが、ポリシー設定のファイルを合わせてGACに登録しておくことで、そちらも不要になった。
oraprovcfg /action:gac /providerpath:Oracle_Clientのルートディレクトリ\ODP.NET\PublisherPolicy\2x\Policy.2.102.Oracle.DataAccess.dll
バージョンごとに5つほどファイルがあるので、全部登録しておけばいい。