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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<Assembly:AssemblyKeyFileAttribute("keyfile.snk")>
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
[assembly:AssemblyKeyFileAttribute("keyfile.snk")];
ПримечаниеПримечание

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

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

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

См. также

Задачи

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

Ссылки

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

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

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

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

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

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