Практическое руководство. Создание пары открытого и закрытого ключей
Для подписи сборки строгим именем необходимо иметь пару, состоящую из открытого и закрытого ключа. Эта пара криптографических ключей используется во время компиляции для создания сборки со строгим именем. Пару ключей можно создать с помощью средства для работы со строгими именами (Sn.exe). Файлы пары ключей обычно имеют расширение SNK.
Note
В Visual Studio страницы свойств проекта C# и Visual Basic включают вкладку Подписывание, которая позволяет выбрать существующие файлы ключей или создать новые файлы ключей без использования Sn.exe. В Visual C++ можно указать расположение уже существующего файла ключа на странице свойств Дополнительно в разделе Компоновщик раздела Свойства конфигурации окна Страницы свойств. Использование атрибута AssemblyKeyFileAttribute для идентификации пар файлов ключей признано устаревшим начиная с Visual Studio 2005.
Создание пары ключей
Чтобы создать пару ключей, в командной строке введите следующую команду:
sn –k <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")>