厳密な名前付きアセンブリStrong-named assemblies

アセンブリの厳格な名前付けにより、アセンブリに対して一意の ID を作成し、アセンブリの競合を防ぐことができます。Strong-naming an assembly creates a unique identity for the assembly, and can prevent assembly conflicts.

厳格な名前付きのアセンブリを作成する方法What makes a strong-named assembly?

厳格な名前付きのアセンブリは、アセンブリと一緒に配布された公開キーに対応する秘密キーとアセンブリ自体を使用して生成されます。A strong named assembly is generated by using the private key that corresponds to the public key distributed with the assembly, and the assembly itself. アセンブリには、アセンブリ マニフェストが含まれます。ここには、アセンブリを構成するすべてのファイルの名前とハッシュが格納されています。The assembly includes the assembly manifest, which contains the names and hashes of all the files that make up the assembly. 同じ厳格な名前を持つ複数のアセンブリは、同一である必要があります。Assemblies that have the same strong name should be identical.

Visual Studio またはコマンド ライン ツールを使用して、アセンブリに厳格な名前を付けることができます。You can strong-name assemblies by using Visual Studio or a command-line tool. 詳細については、「方法 :厳密な名前でアセンブリに署名する」または「Sn.exe (厳密な名前ツール)」 を参照してください。For more information, see How to: Sign an assembly with a strong name or Sn.exe (Strong Name tool).

厳格に名前付けされたアセンブリには、アセンブリの単純テキスト名、バージョン番号、カルチャ情報 (省略可能)、デジタル署名、および署名に使用する秘密キーに対応した公開キーが含まれています。When a strong-named assembly is created, it contains the simple text name of the assembly, the version number, optional culture information, a digital signature, and the public key that corresponds to the private key used for signing.

警告

セキュリティに関しては、厳格な名前に依存しないでください。Do not rely on strong names for security. 厳格な名前は、一意の ID を提供するだけです。They provide a unique identity only.

アセンブリに厳格な名前を付ける理由Why strong-name your assemblies?

厳密な名前付きのアセンブリを参照すると、バージョン管理や名前の一意性を保護できるなどの利点を期待できます。When you reference a strong-named assembly, you can expect certain benefits, such as versioning and naming protection. .NET Framework では、厳密な名前付きのアセンブリは、一部のシナリオを有効にするために必要な、グローバル アセンブリ キャッシュにインストールできます。In the .NET Framework, strong-named assemblies can be installed in the global assembly cache, which is required to enable some scenarios.

厳格な名前付きのアセンブリは次のシナリオで役立ちます。Strong-named assemblies are useful in the following scenarios:

  • 独自のアセンブリを厳密な名前付きのアセンブリが参照できるようにする場合、または他の厳密な名前付きのアセンブリから独自のアセンブリへの friend アクセスを可能にする場合。You want to enable your assemblies to be referenced by strong-named assemblies, or you want to give friend access to your assemblies from other strong-named assemblies.

  • 同じアセンブリのさまざまなバージョンにアプリがアクセスする必要がある場合。An app needs access to different versions of the same assembly. これは、競合することなく同じアプリ ドメインで side-by-side の読み込みを実行するために、アセンブリのさまざまなバージョンが必要であることを意味します。This means you need different versions of an assembly to load side by side in the same app domain without conflict. たとえば、同じ簡易名を持つアセンブリ内に API のさまざまな拡張子が存在する場合、厳格な名前付けはアセンブリの各バージョンに一意の ID を提供します。For example, if different extensions of an API exist in assemblies that have the same simple name, strong-naming provides a unique identity for each version of the assembly.

  • 独自のアセンブリを使用するアプリのパフォーマンスに悪影響を及ぼさないように、アセンブリをドメインに中立にする場合。You do not want to negatively affect performance of apps using your assembly, so you want the assembly to be domain neutral. ドメイン中立のアセンブリはグローバル アセンブリ キャッシュにインストールされている必要があるため、この場合は厳密な名前を付ける必要があります。This requires strong-naming because a domain-neutral assembly must be installed in the global assembly cache.

  • 発行者ポリシーを提供することにより、アプリへのサービスを集中管理する場合。これは、グローバル アセンブリ キャッシュにアセンブリがインストールされている必要があることを意味します。You want to centralize servicing for your app by applying publisher policy, which means the assembly must be installed in the global assembly cache.

オープン ソースの開発者が厳密な名前付きのアセンブリによる ID の利点を必要とする場合、アセンブリに関連付けられた秘密キーをソース コントロール システムにチェックインすることを検討してください。If you are an open-source developer and you want the identity benefits of a strong-named assembly, consider checking in the private key associated with an assembly to your source control system.

関連項目See also