2009-08-10 10 views
7

私は約10以上のアセンブリを持つ製品を持っています。私たちはアセンブリの名前を強く命名することなくそれを出荷しました。しかし、強い命名法について読んだら、強固な名前の集合体を作ることが賢明だと思います。ちょうど知りたかったのは、プログラムで使用されているすべてのアセンブリの名前を強くすることがベストプラクティスですか?あなたの製品に使用されているすべてのアセンブリに厳密な名前を付けていますか?

どのような考えですか?

+0

ここにもうひとつ密接に関連する質問があります。http://stackoverflow.com/questions/796945/should-interop-assemblies-be-signed – sharptooth

答えて

9

はい、これはベストプラクティスであり、特にこのコードを顧客に出荷していることを考慮すると、本当にそうすべきです(内部またはウェブベースのアプリケーションでは、厳密な命名があまり重要ではないと考えています)。

この根拠の説明については

Strong-Named Assembliesを参照してください。

(提供された場合)強い名前は アセンブリのアイデンティティ - その単純なテキスト 名、バージョン番号、および文化 情報で構成されてい-Plus A 公開鍵とデジタル署名。それ は 対応する秘密鍵を使用して、アセンブリファイル (順番にアセンブリを構成する すべてのファイルの 名とハッシュを含むアセンブリ マニフェストを含むファイル)から生成されます。 Microsoft® VisualStudio®.NETおよびその他の 開発ツールは、 Windowsソフトウェア開発キット(SDK) で、 アセンブリに厳密な名前を割り当てることができます。同じ名前の という名前のアセンブリは、 と同じであると予想されます。

という強力な名前のアセンブリに署名することで、グローバルに名前が であることを確認できます。特に、強い 名は、次の の要件を満たす:

  • ストロング名は一意のキーペアに頼ることで 一意の名前を保証します。組み込みの が1つの秘密鍵で生成されたため、他の秘密鍵で生成されたアセンブリと異なる名前の があるため、 は同じアセンブリ名 を生成できません。

  • 強い名前はアセンブリのバージョン 系統を保護します。強力な名前 は、誰もアセンブリの後続バージョン を作成できないようにします。 ユーザーは、 のバージョンが、それらがロードしているアセンブリの が、 のアプリケーションが作成されたバージョン を作成した同じ発行元から来ていることを確認できます。

  • 強い名前では、完全なチェックが行われます( )。 .NET を渡すフレームワークのセキュリティチェックでは、 は、アセンブリの内容が構築されてから に変更されていないことが保証されています。しかしながら、 の強い名前とそれ自体は、例えば の場合、デジタル署名と サポート証明書を提供するようなレベルの の信頼を意味しないことに注意してください。あなたは厳密な名前付き アセンブリを参照する場合

、あなたは、このようなバージョン管理と 命名保護などの特定の 利益を、得ることを期待します。厳密な名前付き アセンブリは、これらの利点を持っていない ない単純な名前でアセンブリ を参照している場合、あなたは 厳密な名前のアセンブリを使用してから派生し、 DLLの競合に戻ります 利益を失います。したがって、強い名前の アセンブリは、他の 厳密な名前のアセンブリのみを参照できます。

関連する問題