グローバル アセンブリ キャッシュ

共通言語ランタイムがインストールされている各コンピュータには、グローバル アセンブリ キャッシュと呼ばれる、コンピュータ全体にわたって使用されるコード キャッシュがあります。グローバル アセンブリ キャッシュは、そのコンピュータ上の複数のアプリケーションで共有するように指定されたアセンブリを格納します。

アセンブリを共有するには、必要な場合にだけそれらのアセンブリをグローバル アセンブリ キャッシュにインストールします。一般的には、明らかにアセンブリを共有する必要がある場合を除いて、アセンブリの依存関係はプライベートにし、アセンブリはアプリケーション ディレクトリに配置します。また、COM 相互運用またはアンマネージ コードからアセンブリにアクセスできるようにするために、アセンブリをグローバル アセンブリ キャッシュにインストールする必要はありません。

Noteメモ :

アセンブリをグローバル アセンブリ キャッシュにインストールしないようにする必要がある場合もあります。アプリケーションを構成するアセンブリの 1 つをグローバル アセンブリ キャッシュに配置した場合は、アプリケーション ディレクトリをコピーする xcopy コマンドを使用してアプリケーションをレプリケートしたりインストールしたりすることはできなくなります。この場合、グローバル アセンブリ キャッシュ内に配置したアセンブリも移動する必要があります。

アセンブリをグローバル アセンブリ キャッシュに配置するには、いくつかの方法があります。

  • グローバル アセンブリ キャッシュを扱うことができるようにデザインされたインストーラを使用する。これは、アセンブリをグローバル アセンブリ キャッシュにインストールするために一般的に使用される方法です。

  • .NET Framework SDK に用意されている開発者ツールであるグローバル アセンブリ キャッシュ ツール (Gacutil.exe) を使用する。

  • Windows エクスプローラを使用して、アセンブリをキャッシュにドラッグする。

    Noteメモ :

    配置時にアセンブリをグローバル アセンブリ キャッシュにインストールするには、Windows Installer 2.0 を使用する必要があります。Windows エクスプローラやグローバル アセンブリ キャッシュ ツールでは、Windows Installer を使用した場合には提供されるアセンブリ参照カウントやその他の機能が提供されないため、これらのツールは開発時にだけ使用してください。

通常、管理者は、書き込みおよび実行アクセスを制御するアクセス制御リスト (ACL: Access Control List) を使用して systemroot ディレクトリを保護します。グローバル アセンブリ キャッシュは、systemroot ディレクトリのサブディレクトリにインストールされるため、このディレクトリの ACL を継承します。グローバル アセンブリ キャッシュからファイルを削除する場合は、管理者権限を持つユーザーに対してだけ許可することをお勧めします。

グローバル アセンブリ キャッシュに配置するアセンブリには、厳密な名前を付けておく必要があります。アセンブリをグローバル アセンブリ キャッシュに追加すると、アセンブリを構成するすべてのファイルに対して、整合性チェックが実行されます。キャッシュはこのような整合性チェックを実行することで、ファイルが変更されたにもかかわらず、マニフェストにその変更が反映されていないなど、アセンブリに不整合が生じていないかどうかを確認します。

参照

概念

厳密な名前付きアセンブリ

その他の技術情報

共通言語ランタイムのアセンブリ
アセンブリとグローバル アセンブリ キャッシュの使用