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

共通言語ランタイムがインストールされている各コンピューターには、グローバル アセンブリ キャッシュと呼ばれる、コンピューター全体にわたって使用されるコード キャッシュがあります。Each computer where the Common Language Runtime is installed has a machine-wide code cache called the Global Assembly Cache. グローバル アセンブリ キャッシュは、そのコンピューター上の複数のアプリケーションで共有するように特別に指定されたアセンブリを格納します。The Global Assembly Cache stores assemblies specifically designated to be shared by several applications on the computer.

アセンブリを共有するには、必要な場合にだけそれらのアセンブリをグローバル アセンブリ キャッシュにインストールします。You should share assemblies by installing them into the Global Assembly Cache only when you need to. 一般的には、明らかにアセンブリを共有する必要がある場合を除いて、アセンブリの依存関係はプライベートにし、アセンブリはアプリケーション ディレクトリに配置します。As a general guideline, keep assembly dependencies private, and locate assemblies in the application directory unless sharing an assembly is explicitly required. また、COM 相互運用またはアンマネージ コードからアセンブリにアクセスできるようにするために、アセンブリをグローバル アセンブリ キャッシュにインストールする必要はありません。In addition, it is not necessary to install assemblies into the Global Assembly Cache to make them accessible to COM interop or unmanaged code.

注意

アセンブリのグローバル アセンブリ キャッシュへのインストールを明示的に避けたい場合もあります。There are scenarios where you explicitly do not want to install an assembly into the Global Assembly Cache. アプリケーションを構成するアセンブリの 1 つをグローバル アセンブリ キャッシュに配置した場合は、アプリケーション ディレクトリをコピーする xcopy コマンドを使用してアプリケーションをレプリケートしたりインストールしたりすることはできなくなります。If you place one of the assemblies that make up an application in the Global Assembly Cache, you can no longer replicate or install the application by using the xcopy command to copy the application directory. この場合、グローバル アセンブリ キャッシュ内に配置したアセンブリも移動する必要があります。You must move the assembly in the Global Assembly Cache as well.

アセンブリをグローバル アセンブリ キャッシュに配置するには、次の 2 つの方法があります。There are two ways to deploy an assembly into the Global Assembly Cache:

  • グローバル アセンブリ キャッシュを扱えるように設計されたインストーラーを使用する。Use an installer designed to work with the Global Assembly Cache. これは、アセンブリをグローバル アセンブリ キャッシュにインストールするための推奨オプションです。This is the preferred option for installing assemblies into the Global Assembly Cache.

  • Windows Software Development Kit (SDK)Windows Software Development Kit (SDK)に用意されているグローバル アセンブリ キャッシュ ツール (Gacutil.exe) という開発者ツールを使用する。Use a developer tool called the Global Assembly Cache tool (Gacutil.exe), provided by the Windows Software Development Kit (SDK)Windows Software Development Kit (SDK).

    注意

    配置時に、Windows Installer を使用して、アセンブリをグローバル アセンブリ キャッシュにインストールします。In deployment scenarios, use Windows Installer to install assemblies into the Global Assembly Cache. グローバル アセンブリ キャッシュ ツールの使用は、開発時のみに限定してください。グローバル アセンブリ キャッシュ ツールでは、Windows インストーラーを使用した場合に提供されるアセンブリ参照カウントやその他の機能が提供されません。Use the Global Assembly Cache tool only in development scenarios, because it does not provide assembly reference counting and other features provided when using the Windows Installer.

.NET Framework 4 以降では、グローバル アセンブリ キャッシュの既定の場所は %windir%\Microsoft.NET\assembly です。Starting with the .NET Framework 4, the default location for the Global Assembly Cache is %windir%\Microsoft.NET\assembly. .NET Framework の以前のバージョンでは、既定の場所は %windir%\assembly です。In earlier versions of the .NET Framework, the default location is %windir%\assembly.

通常、管理者は、書き込みおよび実行アクセスを制御するアクセス制御リスト (ACL: Access Control List) を使用して systemroot ディレクトリを保護します。Administrators often protect the systemroot directory using an access control list (ACL) to control write and execute access. グローバル アセンブリ キャッシュは、systemroot ディレクトリのサブディレクトリにインストールされるため、このディレクトリの ACL を継承します。Because the Global Assembly Cache is installed in a subdirectory of the systemroot directory, it inherits that directory's ACL. グローバル アセンブリ キャッシュからファイルを削除する場合は、管理者権限を持つユーザーに対してだけ許可することをお勧めします。It is recommended that only users with Administrator privileges be allowed to delete files from the Global Assembly Cache.

グローバル アセンブリ キャッシュに配置するアセンブリには、厳密な名前を付けておく必要があります。Assemblies deployed in the Global Assembly Cache must have a strong name. アセンブリをグローバル アセンブリ キャッシュに追加すると、アセンブリを構成するすべてのファイルに対して、整合性チェックが実行されます。When an assembly is added to the Global Assembly Cache, integrity checks are performed on all files that make up the assembly. キャッシュはこのような整合性チェックを実行することで、ファイルが変更されたにもかかわらず、マニフェストにその変更が反映されていないなど、アセンブリに不整合が生じていないかどうかを確認します。The cache performs these integrity checks to ensure that an assembly has not been tampered with, for example, when a file has changed but the manifest does not reflect the change.

参照See Also

共通言語ランタイムのアセンブリAssemblies in the Common Language Runtime
アセンブリとグローバル アセンブリ キャッシュの使用Working with Assemblies and the Global Assembly Cache
厳密な名前付きアセンブリStrong-Named Assemblies