Oracleデータベースと通信するためにNHibernateを使用する必要があるプロジェクトがあります。
私の職場の多くのプロジェクトはNHibernateを使用しているため、NHibernateアセンブリはグローバルアセンブリキャッシュに配置されました。これは私が完全には理解していないツールです。私の調査から、私は以下を集めました:
- グローバルアセンブリキャッシュは、多くのプロジェクトによって参照されるdllの中央リポジトリです。これにより、DLL地獄の問題が回避されます。dllの新しいバージョンがリリースされると、キャッシュ内で1回更新され、それを参照するすべての.NETプロジェクトが新しいバージョンを使用するようになります。
- アセンブリキャッシュにアセンブリへの参照を追加することはできません。「GACに登録されているアセンブリは、[参照の追加]リストに表示されません」。ただし、レジストリを切断することで、強制的に表示させることができます。
- アセンブリキャッシュにアセンブリへの参照を簡単に追加できます。「[参照の追加]ウィンドウを使用して、GACにインストールしたアセンブリへの参照を追加するだけです」。([参照の追加]ウィンドウにGACアセンブリが表示されないため、これを信じない傾向があります)。
- 私の職場のいくつかのプロジェクトには、GACの多くのアセンブリへの参照があります。これらのアセンブリは[参照の追加]メニューに表示されないため、前任者がレジストリマングリング手法を使用していなかったことを私は知っています。それでも、それらは明らかにGACに由来します-それらのファイルパスはC:\ Windows\assemblyのサブディレクトリです。
ポイント2は明らかに他の3つと矛盾しますが、それが単に誤りであれば、ライブラリを参照するのに問題はありません。私のGACアセンブリが[参照の追加]ウィンドウのどこにも見つからないという現実を確実に反映しています。
私は2つのことを知りたいです:
- 開発者はいつGACを使いたいと思うでしょうか?レジストリのトリックなしでは参照できないライブラリは何が良いのでしょうか?
- レジストリに触れることなく、前任者がGACのライブラリを参照するためにどのような手順を実行しましたか?