Практическое руководство. Создание пары открытого и закрытого ключей

Для подписи сборки строгим именем необходимо иметь пару ключей — открытый и закрытый. Эта пара открытого и закрытого ключей шифрования используется в процессе компиляции для создания сборки со строгим именем. Пару ключей можно создать с использованием средства для работы со строгими именами (Sn.exe). Файлы пары ключей обычно имеют расширение SNK.

ПримечаниеПримечание

В Visual Studio страницы свойств проектов на C# и Visual Basic содержат вкладку Подпись, где можно выбрать существующие файлы ключей или создать новые файлы ключей, не используя программу Sn.exe.В Visual C++ можно указать расположение уже существующего файла ключа на странице свойств Дополнительно подраздела Компоновщик в разделе Свойства конфигурации окна Страницы свойств.Использование атрибута AssemblyKeyFileAttribute для идентификации файлов пары ключей, начиная с Visual Studio 2005, было признано устаревшим.

Создание пары ключей

  • В командной строке введите следующую команду:

    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")];

См. также

Основные понятия

Создание и использование сборок со строгими именами