グローバルアセンブリキャッシュ 【GAC】 Global Assembly Cache
概要
グローバルアセンブリキャッシュ(GAC)とは、Microsoft .NET環境においてアプリケーション間で共有される実行ファイル(アセンブリ)を管理するための保管場所。Windowsにおける共有DLLに相当する仕組みである。.NETでは様々なプログラミング言語で開発したプログラムを「アセンブリ」(assembly)と呼ばれる実行形式に変換して配布する。WindowsにおけるEXEファイルやDLLファイルに相当するプログラムで、.NET実行環境によりプラットフォーム固有のコードに変換されて実行される。
アプリケーションを構成するアセンブリ群は実行環境への導入(インストール)時にシステム内に設けられたそのアプリケーション用の場所に展開されるが、様々なアプリケーションから利用される汎用的な機能を実装したアセンブリは他のアプリケーションから参照できるよう特別な場所に保管される。
その保管場所がグローバルアセンブリキャッシュで、Windowsの.NET Framework 4の場合は「システムディレクトリ¥Microsoft.NET¥assembly」(.NET Framework 3以前では「システムディレクトリ¥assembly」だった)となっている。アセンブリの登録や削除は単純なファイルコピーではなく、インストーラの機能か専用のユーティリティ(gacutil.exeやWindowsエクスプローラ拡張など)で行う。
グローバルアセンブリキャッシュは管理下のアセンブリの名前、バージョン、公開キートークン、対象CPUなどの情報を把握しており、同じ名前でバージョンが異なるアセンブリも適切に区別して保管することができる。従来のWindows環境で共有DLLのバージョン不整合に起因する不具合、いわゆる「DLL地獄」のような状態に陥らないよう配慮されている。
(2023.3.1更新)