アセンブリとグローバル アセンブリ キャッシュの使用Working with Assemblies and the Global Assembly Cache

あるアセンブリを複数のアプリケーションで共有する場合は、そのアセンブリをグローバル アセンブリ キャッシュ内にインストールできます。If you intend to share an assembly among several applications, you can install it into the global assembly cache. 共通言語ランタイムをインストールしている各コンピューターは、このコードをコンピューター全体で使用できます。Each computer where the common language runtime is installed has this machine-wide code cache. グローバル アセンブリ キャッシュは、そのコンピューター上の複数のアプリケーションで共有するように指定されたアセンブリを格納します。The global assembly cache stores assemblies specifically designated to be shared by several applications on the computer. グローバル アセンブリ キャッシュ内にインストールされるアセンブリは、厳密な名前を持つ必要があります。An assembly must have a strong name to be installed in the global assembly cache.

注意

グローバル アセンブリ キャッシュ内に配置されるアセンブリは、アセンブリ名とファイル名の拡張子を除く部分が一致している必要があります。Assemblies placed in the global assembly cache must have the same assembly name and file name (not including the file name extension). たとえば、アセンブリ名が myAssembly のアセンブリの場合、ファイル名は myAssembly.exe または myAssembly.dll である必要があります。For example, an assembly with the assembly name of myAssembly must have a file name of either myAssembly.exe or myAssembly.dll.

アセンブリの共有が必要な場合にだけ、アセンブリをグローバル アセンブリ キャッシュにインストールします。You should share assemblies by installing them into the global assembly cache only when necessary. 一般的には、明らかにアセンブリを共有する必要がある場合を除いて、アセンブリの依存関係はプライベートにし、アセンブリはアプリケーション ディレクトリに配置します。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, you do not have to install assemblies into the global assembly cache to make them accessible to COM interop or unmanaged code.

アセンブリをグローバル アセンブリ キャッシュにインストールする理由は、いくつか考えられます。There are several reasons why you might want to install an assembly into the global assembly cache:

  • 共有の場所。Shared location.

    複数のアプリケーションで使用するアセンブリは、グローバル アセンブリ キャッシュに配置できます。Assemblies that should be used by applications can be put in the global assembly cache. たとえば、すべてのアプリケーションがグローバル アセンブリ キャッシュ内の 1 つのアセンブリを使用する場合は、アセンブリへの参照をリダイレクトするバージョン ポリシー ステートメントを Machine.config ファイルに追加できます。For example, if all applications should use an assembly located in the global assembly cache, a version policy statement can be added to the Machine.config file that redirects references to the assembly.

  • ファイル セキュリティ。File security.

    通常、管理者は、書き込みおよび実行アクセスを制御するアクセス制御リスト (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 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.

  • side-by-side でのバージョン管理。Side-by-side versioning.

    名前は同じでもバージョン情報が異なるアセンブリの複数のコピーを、グローバル アセンブリ キャッシュ内で管理できます。Multiple copies of assemblies with the same name but different version information can be maintained in the global assembly cache.

  • 追加の検索場所。Additional search location.

    共通言語ランタイムは、構成ファイル内のコードベース情報をプローブまたは使用する前に、グローバル アセンブリ キャッシュ内にアセンブリ要求と一致するアセンブリがあるかどうかをチェックします。The common language runtime checks the global assembly cache for an assembly that matches the assembly request before probing or using the codebase information in a configuration file.

アセンブリのグローバル アセンブリ キャッシュへのインストールを明示的に避けたい場合もあります。Note that 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 into the global assembly cache, you can no longer replicate or install the application by using XCOPY to copy the application directory. この場合は、グローバル アセンブリ キャッシュ内のアセンブリも移動する必要があります。In this case, you must also move the assembly into the global assembly cache.

このセクションの内容In This Section

方法: アセンブリをグローバル アセンブリ キャッシュにインストールするHow to: Install an Assembly into the Global Assembly Cache
アセンブリをグローバル アセンブリ キャッシュにインストールする方法について説明します。Describes the ways to install an assembly into the global assembly cache.

方法: グローバル アセンブリ キャッシュの内容を表示するHow to: View the Contents of the Global Assembly Cache
グローバル アセンブリ キャッシュ ツール (Gacutil.exe) を使用して、グローバル アセンブリ キャッシュの内容を表示する方法について説明します。Explains how to use the Gacutil.exe (Global Assembly Cache Tool) to view the contents of the global assembly cache.

方法: グローバル アセンブリ キャッシュからアセンブリを削除するHow to: Remove an Assembly from the Global Assembly Cache
グローバル アセンブリ キャッシュ ツール (Gacutil.exe) を使用して、グローバル アセンブリ キャッシュからアセンブリを削除する方法について説明します。Explains how to use the Gacutil.exe (Global Assembly Cache Tool) to remove an assembly from the global assembly cache.

サービス コンポーネントとグローバル アセンブリ キャッシュの使用Using Serviced Components with the Global Assembly Cache
サービス コンポーネント (マネージド COM+ コンポーネント) をグローバル アセンブリ キャッシュに配置する必要がある理由について説明します。Explains why serviced components (managed COM+ components) should be placed in the global assembly cache.

アセンブリの作成Creating Assemblies
アセンブリの作成の概要を説明します。Provides an overview of creating assemblies.

グローバル アセンブリ キャッシュGlobal Assembly Cache
グローバル アセンブリ キャッシュについて説明します。Describes the global assembly cache.

方法: アセンブリの内容を表示するHow to: View Assembly Contents
Ildasm.exe (IL 逆アセンブラー) を使用して、アセンブリ内の MSIL (Microsoft Intermediate Language) 情報を表示する方法について説明します。Explains how to use the Ildasm.exe (IL Disassembler) to view Microsoft intermediate language (MSIL) information in an assembly.

ランタイムがアセンブリを検索する方法How the Runtime Locates Assemblies
共通言語ランタイムが、アプリケーションを構成するアセンブリを検出して読み込む方法について説明します。Describes how the common language runtime locates and loads the assemblies that make up your application.

アセンブリを使用したプログラミングProgramming with Assemblies
マネージド アプリケーションを構成するブロックであるアセンブリについて説明します。Describes assemblies, the building blocks of managed applications.