方法 : 公開キーと秘密キーのキー ペアを作成する
厳密な名前でアセンブリに署名するには、公開キーと秘密キーのキー ペアが必要です。 公開キーと秘密キーの暗号キー ペアは、コンパイル中に厳密な名前付きアセンブリを作成するために使用されます。 キー ペアは、厳密名ツール (Sn.exe) を使用して生成できます。 通常、キー ペア ファイルには、.snk 拡張子が付きます。
メモ |
---|
Visual Studio では、C# および Visual Basic プロジェクトのプロパティ ページに [署名] タブがあります。このタブでは、既存のキー ファイルを選択したり、Sn.exe を使用せずに新しいキー ファイルを生成したりできます。Visual C++ では、[プロパティ ページ] ウィンドウの [構成プロパティ] セクションの [リンカー] セクションにある [詳細] プロパティ ページで、既存のキー ファイルの場所を指定できます。AssemblyKeyFileAttribute 属性を使用したキー ファイル ペアの指定は、Visual Studio 2005 以降では行われなくなりました。 |
ユーザー コントロールを作成するには、次のようにします。
コマンド プロンプトに次のコマンドを入力します。
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 を使用している場合は、キー ファイルの場所として、次のようにファイル属性を指定したプロジェクト ディレクトリを使用することをお勧めします。
<Assembly:AssemblyKeyFileAttribute("keyfile.snk")>
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
[assembly:AssemblyKeyFileAttribute("keyfile.snk")];