方法: 公開キーと秘密キーのキー ペアを作成する

アセンブリに厳密な名前で署名するには、公開/秘密キーの組み合わせが必要です。 このような公開キーと秘密キーからなる暗号鍵の組み合わせがコンパイル時に利用され、厳密な名前が付いたアセンブリが作成されます。 キーの組み合わせは厳密名ツール (Sn.exe) を利用して作成できます。 キー ペア ファイルには通常、 .snk 拡張子が与えられます。

Note

Visual Studio では、C# と Visual Basic のプロジェクト プロパティ ページに [署名] タブがあります。ここで、Sn.exe を使用することなく、既存のキー ファイルを選択したり、新しいキー ファイルを生成したりすることができます。 Visual C++ では、 [プロパティ ページ] ウィンドウの [構成プロパティ] セクションの [リンカー] セクションの [詳細設定] プロパティ ページで既存のキー ファイルの場所を指定できます。 Visual Studio 2005 より、キー ファイル ペアを特定する AssemblyKeyFileAttribute 属性を使用できなくなりました。

キー ペアを作成する

キー ペアを作成するには、コマンド プロンプトに次のコマンドを入力します。

sn –k<ファイル名>

このコマンドでは、ファイル名はキー ペアを含む出力ファイルの名前になります。

次の例では、sgKey.snk という名前のキー ペアが作成されます。

sn -k sgKey.snk

アセンブリに遅延署名する予定であり、キー ペア全体を制御する (テスト シナリオの範囲を超えることは予期されない) のであれば、次のコマンドを利用してキー ペアを生成し、それから個別ファイルに公開キーを抽出できます。 最初に、キー ペアを作成します。

sn -k keypair.snk

次に、キー ペアから公開キーを抽出し、それを個別ファイルにコピーします。

sn -p keypair.snk public.snk

キー ペアを作成したら、厳密な名前の署名ツールで見つけられる場所にファイルを置く必要があります。

厳密な名前でアセンブリに署名すると、アセンブリ リンカー (Al.exe) は、現在のディレクトリと出力ディレクトリを基準にしてキー ファイルを検索します。 コマンド ライン コンパイラを使用する場合は、コード モジュールを格納する現在のディレクトリにキーをコピーするだけで十分です。

プロジェクト プロパティに [署名] タブがない以前のバージョンの Visual Studio を利用している場合、キー ファイルの推奨場所はファイル属性が次のように指定されたプロジェクト ディレクトリです。

[assembly:AssemblyKeyFileAttribute("keyfile.snk")];
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
<Assembly:AssemblyKeyFileAttribute("keyfile.snk")>

関連項目