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

アセンブリの厳格な名前付けにより、アセンブリに対して一意の ID を作成し、アセンブリの競合を防ぐことができます。

厳格な名前付きのアセンブリを作成する方法

厳格な名前付きのアセンブリは、アセンブリと一緒に配布された公開キーに対応する秘密キーとアセンブリ自体を使用して生成されます。 アセンブリには、アセンブリ マニフェストが含まれます。ここには、アセンブリを構成するすべてのファイルの名前とハッシュが格納されています。 同じ厳格な名前を持つ複数のアセンブリは、同一である必要があります。

Visual Studio またはコマンド ライン ツールを使用して、アセンブリに厳格な名前を付けることができます。 詳細については、厳密な名前でアセンブリに署名する」または「Sn.exe (厳密な名前ツール)」 を参照してください。

厳格に名前付けされたアセンブリには、アセンブリの単純テキスト名、バージョン番号、カルチャ情報 (省略可能)、デジタル署名、および署名に使用する秘密キーに対応した公開キーが含まれています。

警告

セキュリティに関しては、厳格な名前に依存しないでください。 厳格な名前は、一意の ID を提供するだけです。

アセンブリに厳格な名前を付ける理由

.NET Framework では、厳格な名前付きのアセンブリは次のシナリオで役立ちます。

  • 独自のアセンブリを厳密な名前付きのアセンブリが参照できるようにする場合、または他の厳密な名前付きのアセンブリから独自のアセンブリへの friend アクセスを可能にする場合。

  • 同じアセンブリのさまざまなバージョンにアプリがアクセスする必要がある場合。 これは、競合することなく同じアプリ ドメインで side-by-side の読み込みを実行するために、アセンブリのさまざまなバージョンが必要であることを意味します。 たとえば、同じ簡易名を持つアセンブリ内に API のさまざまな拡張子が存在する場合、厳格な名前付けはアセンブリの各バージョンに一意の ID を提供します。

  • 独自のアセンブリを使用するアプリのパフォーマンスに悪影響を及ぼさないように、アセンブリをドメインに中立にする場合。 ドメイン中立のアセンブリはグローバル アセンブリ キャッシュにインストールされている必要があるため、この場合は厳密な名前を付ける必要があります。

  • 発行者ポリシーを提供することにより、アプリへのサービスを集中管理する場合。これは、グローバル アセンブリ キャッシュにアセンブリがインストールされている必要があることを意味します。

.NET Core と .NET 5+ では、厳密な名前付きのアセンブリに素材のベネフィットありません。 ランタイムにより厳密な名前付きの署名が検証されることはなく、アセンブリのビルドに厳密な名前が使用されることもありません。

.NET Framework との互換性の向上のためにオープン ソースの開発者が厳密な名前付きのアセンブリによる ID の利点を必要とする場合、アセンブリに関連付けられた秘密キーをソース コントロール システムにチェックインすることを検討してください。

関連項目