今回はOracleDBのアンマネージ・ドライバを利用した開発の中で遭遇した事象についてのお話です。
Problem
OracleDBのODP.NETドライバのアセンブリをグローバル・キャッシュ・アセンブリ(GAC)にインストールするには、アセンブリに付属するコマンド OraProvCfg.exe
を利用します:
コマンドプロンプトを「管理者として実行」して次のようなコマンドを実行します:
> oraprovcfg /action:gac /providerpath:Oracle.DataAccess.dll
INFO: oracle.dataaccess.dll is registered successfully in GAC.
これによりHACにアセンブリが登録されます:
では削除はどうでしょう?
公式に案内されているコマンドは次の通り(これも管理者として実行):
> oraprovcfg /action:ungac /providerpath:Oracle.DataAccess.dll
INFO: oracle.dataaccess.dll is un-registered successfully from GAC.
出力メッセージは「GACからの登録解除に成功した」とのことで、結果は・・・
消えません。
環境によるのでしょう。私の環境ではGACからアセンブリが削除できませんでした。
Solution
Visual Studioに付属する gacutil.exe
(グローバル・アセンブリ・キャッシュ・ツール)を利用します。
開発者コマンドプロンプトを「管理者として実行」します:
次のようにコマンドを実行します:
gacutil /u Oracle.DataAccess
Microsoft (R) .NET Global Assembly Cache Utility. Version 4.0.30319.0
Copyright (c) Microsoft Corporation. All rights reserved.
アセンブリ: Oracle.DataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
アンインストール済み: Oracle.DataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
アンインストールされたアセンブリの数 = 1
エラーの数 = 0
すると、消えました。