Masataka Miki's Blog

すみません、わかりません。もっと勉強して改善します。

[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つほどファイルがあるので、全部登録しておけばいい。

 - 技術