厳密な名前付きアセンブリ
厳密な名前は、単純テキスト名、バージョン番号、カルチャ情報 (設定されている場合) から成るアセンブリの識別子と、公開キーおよびデジタル署名で構成されます。厳密な名前は、対応する秘密キーを使用して、アセンブリ ファイルから生成されます。アセンブリ ファイルにはアセンブリ マニフェストが格納されており、マニフェストには、アセンブリを構成するすべてのファイルの名前とハッシュが格納されています。Microsoft® Visual Studio® .NET、および .NET Framework SDK に用意されているその他の開発ツールでは、アセンブリに厳密な名前を割り当てることができます。同じ厳密な名前を持つ複数のアセンブリは、同一であると見なされます。
アセンブリに厳密な名前で署名することにより、名前をグローバルに一意にすることができます。具体的には、厳密な名前は次の要件を満たします。
厳密な名前は、一意なキー ペアに依存することにより、名前の一意性を保証します。ある秘密キーを使用して生成されたアセンブリの名前は、別の秘密キーを使用して生成されたアセンブリの名前とは異なるため、同じアセンブリ名を元の秘密キーの所有者以外の人が生成することはできません。
厳密な名前は、アセンブリのバージョン系統を保護します。厳密な名前を付けることにより、アセンブリの作成者以外の人が、そのアセンブリの後続バージョンを作成することはできなくなります。そのため、ユーザーが読み込んでいるアセンブリのバージョンの発行者が、アプリケーションのビルドに使用されたバージョンの発行者と同じであることが保証されます。
厳密な名前を付けることで、厳密な整合性チェックが実行されます。.NET Framework のセキュリティ チェックにパスすることで、そのアセンブリの内容が作成されて以来変更されていないことが保証されます。ただし、厳密な名前そのものが、デジタル署名やサポートされている証明書によって実現されるのと同レベルの信頼性を示すわけではありません。
厳密な名前付きのアセンブリを参照すると、バージョン管理や名前の一意性を保護できるなどの利点を期待できます。そうした利点を持つ厳密な名前付きのアセンブリから、そうした利点を持たない簡易名付きのアセンブリを参照した場合、厳密な名前付きアセンブリを使用することで得られる利点は失われ、DLL の競合が再発する可能性があります。したがって、厳密な名前付きのアセンブリは、ほかの厳密な名前付きアセンブリだけを参照できます。