厳密な名前でアセンブリに署名するには、公開キーと秘密キーのキー ペアが必要です。公開キーと秘密キーの暗号キー ペアは、コンパイル中に厳密な名前付きアセンブリを作成するために使用されます。キー ペアは、厳密名ツール (Sn.exe) を使用して生成できます。通常、キー ペア ファイルには、.snk 拡張子が付きます。
ユーザー コントロールを作成するには、次のようにします。
コマンド プロンプトに次のコマンドを入力します。
sn –k <file name>
このコマンドで、file name はキー ペアを格納する出力ファイルの名前です。
キー ペア sgKey.snk
を作成する例を次に示します。
sn -k sgKey.snk
アセンブリに遅延署名してキー ペア全体を制御する場合 (通常、テスト シナリオでだけ実行できます) は、次のコマンドを使用して、キー ペアを生成し、そのキー ペアから公開キーを別のファイルに抽出できます。最初に、キー ペアを作成します。
sn -k keypair.snk
次に、キー ペアから公開キーを抽出し、別のファイルにコピーします。
sn -p keypair.snk public.snk
キー ペアの作成後に、厳密な名前の署名ツールが検出できる場所にファイルを配置する必要があります。厳密な名前でアセンブリに署名すると、アセンブリ リンカ (Al.exe) は、現在のディレクトリと出力ディレクトリを基準にしてキー ファイルを検索します。コマンド ライン コンパイラを使用する場合は、コード モジュールを格納する現在のディレクトリにキーをコピーするだけで十分です。
Visual Studio .NET などの IDE を使用する場合、厳密な名前でアセンブリに署名するには、IDE がキー ファイルを検索する場所を理解しておく必要があります。たとえば、C# コンパイラがバイナリを含むディレクトリにあるキー ファイルを検索する場合、Visual Basic .NET は Visual Studio Solution を含むディレクトリにあるキー ファイルを検索します。キー ファイルを適切なプロジェクト ディレクトリに配置し、ファイル属性を次のように設定します。
<Assembly: AssemblyKeyFileAttribute("key.snk")>
[C#]
[assembly: AssemblyKeyFileAttribute(@"..\..\key.snk")]