回答:
そう、基本的には、競合を心配せずにDLLをグローバルにアクセスできるようにする方法です。DLL Hellはもうありません。それぞれのアーキテクチャとバージョンは、それ自身の住む場所を手に入れます。
また、エクスプローラーで独自の方法で閲覧できるので、
C:\ Windows \ assembly
Windowsエクスプローラでは、すべてのDLLが一覧表示されます。
しかし、起動するとcmd
、実際の構造がわかります。
C:\ Users \ tritter> cd C:\ Windows \ assembly C:\ Windows \ assembly> dir C:\ Windows \ assemblyのディレクトリ 2009/07/20 02:18 PM <DIR> GAC 2009/06/17 04:22 PM <DIR> GAC_32 2009/06/17 04:22 PM <DIR> GAC_64 2009/06/17 04:22 PM <DIR> GAC_MSIL ...をちょきちょきと切る... 0ファイル0バイト 9 Dir(s)90,538,311,680 bytes free C:\ Windows \ assembly> cd GAC_64 C:\ Windows \ assembly \ GAC_64> dir C:\ Windows \ assembly \ GAC_64のディレクトリ 2009/06/17 04:22 PM <DIR>。 2009/06/17 04:22 PM <DIR> .. 01/19/2008 09:54 AM <DIR> blbproxy ...をちょきちょきと切る... 2008/01/19 09:54 AM <DIR> srmlib 01/19/2008 06:11 AM <DIR> System.Data 01/19/2008 06:11 AM <DIR> System.Data.OracleClient ...をちょきちょきと切る... 0ファイル0バイト 34 Dir(s)90,538,311,680 bytes free C:\ Windows \ assembly \ GAC_64> cd System.Data C:\ Windows \ assembly \ GAC_64 \ System.Data> dir C:\ Windows \ assembly \ GAC_64 \ System.Dataのディレクトリ 01/19/2008 06:11 AM <DIR>。 01/19/2008 06:11 AM <DIR> .. 2009年4月11日午後12:20 <DIR> 2.0.0.0__b77a5c561934e089 0ファイル0バイト 3 Dir(s)90,538,311,680 bytes free C:\ Windows \ assembly \ GAC_64 \ System.Data> cd 2.0.0.0__b77a5c561934e089 C:\ Windows \ assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089>ディレクトリ C:\ Windows \ assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089のディレクトリ 2009/11/04 12:20 PM <DIR>。 2009年4月11日12:20 PM <DIR> .. 2009年4月11日午後12時12分3,008,512 System.Data.dll 1ファイル3,008,512バイト 2 Dir(s)90,538,311,680 bytes free C:\ Windows \ assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089>
ここでは、System.Dataのバージョン2.0.0.0__b77a5c561934e089を確認できます。
DLLは5つの部分で識別されます。
最初の3つは一般的に大きなものですが。
分解してみましょう:
そのため、GACはコードライブラリを格納する場所である必要があり、マシンで実行されているすべてのアプリケーションからアクセスできるようにします。
共通言語ランタイムがインストールされている各コンピューターには、グローバルアセンブリキャッシュと呼ばれるマシン全体のコードキャッシュがあります。グローバルアセンブリキャッシュには、コンピューター上の複数のアプリケーションによって共有されるように特別に指定されたアセンブリが格納されます。
アセンブリは、必要な場合にのみグローバルアセンブリキャッシュにインストールして共有する必要があります。一般的なガイドラインとして、アセンブリの依存関係をプライベートに保ち、アセンブリの共有が明示的に必要でない限り、アプリケーションディレクトリでアセンブリを見つけます。さらに、アセンブリをグローバルアセンブリキャッシュにインストールして、COM相互運用機能またはアンマネージコードからアクセスできるようにする必要はありません。
MSDNに含まれているものに驚くかもしれませんが、通常は記事のように読むことができます。上部にある単純明快で最も重要な部分は、複雑な詳細がさらに深くなっています。それは確かにそれが私ができるよりもよく説明しています。
Visual Studioは、[ 参照 ] ウィンドウの[.NET]タブのGACにあるすべてのDLLを表示することに注意してください。(ソリューションエクスプローラーでプロジェクトを右クリックし、[参照の追加]を選択します。)これにより、より具体的なアイデアが得られます。
Exeアプリケーションは、まず、現在のディレクトリからサブディレクトリへの参照です。そして、システムディレクトリ。VS6.0システムディレクトリは..windows / system32でした。.NETシステムディレクトリは、以下のGACパスのようなものです。
GACパス
1)C:\ Windows \ Assembly(.NET 2.0〜3.5の場合)
2)C:\ Windows \ Microsoft.NET \ assembly(.NET 4.0の場合)
アセンブリをGACにインストールする方法(管理者として)
1)ドラッグアンドドロップ
2)Visual StudioコマンドプロンプトでGacUtil.exeを使用する
gacutil -i [Path][Assembly Name].dll
GACからアセンブリをアンインストールする方法(管理者として)
gacutil -u [Assembly Name], Version=1.0.0.0, PublickeyToken=7896a3567gh