Практическое руководство. Подписание сборки строгим именем

Обновлен: Ноябрь 2007

Пакет SDK (пакет средств разработки программного обеспечения) для Windows предоставляет несколько способов подписать сборку строгим именем.

  • С помощью Компоновщика сборок (Al.exe), входящего в пакет SDK для Windows.

  • С помощью атрибутов сборки, позволяющих вставить в код данные строгого имени. Можно использовать либо AssemblyKeyFileAttribute, либо AssemblyKeyNameAttribute в зависимости от того, где находится используемый файл ключа.

    xc31ft41.alert_note(ru-ru,VS.90).gifПримечание.

    В платформе .NET Framework 2.0 некоторые компиляторы выдают предупреждение при использовании атрибута.

  • Использование таких параметров компилятора как /keyfile или /delaysign в C# и Visual Basic, или параметров компоновщика С++ /KEYFILE или /DELAYSIGN. (подробные сведения об отложенной подписи см. в разделе Отложенная подпись сборки).

xc31ft41.alert_note(ru-ru,VS.90).gifПримечание.

В Visual Studio 2005 среда разработки предоставляет средства для подписи сборки. См. разделы Управление сборками и подписывание манифестов и Страница "Подписывание" в конструкторе проектов.

Для подписи сборки строгим именем необходимо иметь пару ключей шифрования. Дополнительные сведения о создании пары ключей смотрите в разделе Практическое руководство. Создание пары открытого и закрытого ключей.

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

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

    al /out:<имя сборки> <имя модуля> /keyfile:<имя файла>

    В этой команде имя сборки является именем сборки, которую необходимо подписать строгим именем, имя модуля является именем модуля кода, используемого для создания сборки, а имя файла является именем контейнера или файла, содержащего пару ключей.

Следующий пример подписывает сборку MyAssembly.dll строгим именем с помощью файла ключей sgKey.snk.

al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk

Подпись сборки строгим именем с помощью атрибутов

  • В модуль кода добавьте атрибуты AssemblyKeyFileAttribute или AssemblyKeyNameAttribute, которые задают имя файла или контейнера, содержащего пару ключей, используемую при подписи сборки строгим именем.

В следующем примере кода используется AssemblyKeyFileAttribute с файлом ключа с именем sgKey.snk, который находится в том же каталоге, где и компилируется сборка. Предполагается, что сборка компилируется с помощью компиляторов командной строки vbc.exe и сsc.exe.

<Assembly:AssemblyKeyFileAttribute("sgKey.snk")>
[assembly:AssemblyKeyFileAttribute(@"sgKey.snk")]
xc31ft41.alert_note(ru-ru,VS.90).gifПримечание.

В средах разработки, таких как Visual Studio, сборка может скомпилироваться не в каталоге проекта. Например, некоторые версии Visual Studio компилируют проекты C# в подкаталоге bin\Debug. В этом случае путь в примере кода был бы следующим ".. \\..\\sgKey.snk ». В Visual Studio 2005 файл ключа для C# можно указать в настройках проекта.

Кроме того, при компиляции сборки можно использовать отложенную подпись. Дополнительные сведения см. в разделе Отложенная подпись сборки.

При подписи сборки строгим именем, компоновщик сборок (Al.exe) выполняет поиск файла ключа относительно текущей и выходной папки. При использовании компиляторов, работающих в режиме командной строки, достаточно просто скопировать ключ в текущий каталог, содержащий модули кода.

См. также

Задачи

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

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

Отложенная подпись сборки

Ссылки

Страница "Подписывание" в конструкторе проектов

Другие ресурсы

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

Управление сборками и подписывание манифестов