注
この記事は .NET Framework に固有のものです。 .NET 6 以降のバージョンを含む、.NET の新しい実装には適用されません。
共通言語ランタイムがインストールされている各コンピューターには、グローバル アセンブリ キャッシュと呼ばれるコンピューター全体のコード キャッシュがあります。 グローバル アセンブリ キャッシュには、コンピューター上の複数のアプリケーションによって共有されるように指定されたアセンブリが格納されます。
アセンブリは、必要なときにのみグローバル アセンブリ キャッシュにインストールして共有する必要があります。 一般的なガイドラインとして、アセンブリの依存関係を非公開にし、アセンブリの共有が明示的に必要でない限り、アプリケーション ディレクトリでアセンブリを見つけます。 さらに、アセンブリをグローバル アセンブリ キャッシュにインストールして、COM 相互運用機能またはアンマネージ コードからアクセスできるようにする必要はありません。
注
アセンブリをグローバル アセンブリ キャッシュに明示的にインストールしないシナリオがあります。 アプリケーションを構成するアセンブリの 1 つをグローバル アセンブリ キャッシュに配置した場合、 xcopy コマンドを使用してアプリケーション ディレクトリをコピーすることで、アプリケーションをレプリケートまたはインストールできなくなります。 グローバル アセンブリ キャッシュ内のアセンブリも移動する必要があります。
アセンブリをグローバル アセンブリ キャッシュに配置するには、次の 2 つの方法があります。
グローバル アセンブリ キャッシュを操作するように設計されたインストーラーを使用します。 これは、アセンブリをグローバル アセンブリ キャッシュにインストールする場合に推奨されるオプションです。
Windows SDK によって提供される グローバル アセンブリ キャッシュ ツール (Gacutil.exe) と呼ばれる開発者ツールを使用します。
注
展開シナリオでは、Windows インストーラーを使用してアセンブリをグローバル アセンブリ キャッシュにインストールします。 グローバル アセンブリ キャッシュ ツールは、Windows インストーラーの使用時に提供されるアセンブリ参照カウントやその他の機能を提供しないため、開発シナリオでのみ使用します。
.NET Framework 4 以降では、グローバル アセンブリ キャッシュの既定の場所は \Microsoft.NET\assembly%windir%。 以前のバージョンの .NET Framework では、既定の場所は \assembly%windir% です。
多くの場合、管理者は、書き込みと実行アクセスを制御するためにアクセス制御リスト (ACL) を使用して systemroot ディレクトリを保護します。 グローバル アセンブリ キャッシュは systemroot ディレクトリのサブディレクトリにインストールされるため、そのディレクトリの ACL を継承します。 グローバル アセンブリ キャッシュからファイルを削除するには、管理者特権を持つユーザーのみを許可することをお勧めします。
グローバル アセンブリ キャッシュに配置されるアセンブリには厳密な名前が必要です。 アセンブリがグローバル アセンブリ キャッシュに追加されると、アセンブリを構成するすべてのファイルに対して整合性チェックが実行されます。 キャッシュは、ファイルが変更されたがマニフェストに変更が反映されていない場合など、アセンブリが改ざんされていないことを確認するために、これらの整合性チェックを実行します。
こちらも参照ください
.NET