Практическое руководство. Подписание сборки строгим именем
Обновлен: Ноябрь 2007
Пакет 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 с файлом ключа с именем sgKey.snk, который находится в том же каталоге, где и компилируется сборка. Предполагается, что сборка компилируется с помощью компиляторов командной строки vbc.exe и сsc.exe.
<Assembly:AssemblyKeyFileAttribute("sgKey.snk")>
[assembly:AssemblyKeyFileAttribute(@"sgKey.snk")]
Примечание. |
---|
В средах разработки, таких как Visual Studio, сборка может скомпилироваться не в каталоге проекта. Например, некоторые версии Visual Studio компилируют проекты C# в подкаталоге bin\Debug. В этом случае путь в примере кода был бы следующим ".. \\..\\sgKey.snk ». В Visual Studio 2005 файл ключа для C# можно указать в настройках проекта. |
Кроме того, при компиляции сборки можно использовать отложенную подпись. Дополнительные сведения см. в разделе Отложенная подпись сборки.
При подписи сборки строгим именем, компоновщик сборок (Al.exe) выполняет поиск файла ключа относительно текущей и выходной папки. При использовании компиляторов, работающих в режиме командной строки, достаточно просто скопировать ключ в текущий каталог, содержащий модули кода.
См. также
Задачи
Практическое руководство. Создание пары открытого и закрытого ключей
Основные понятия
Ссылки
Страница "Подписывание" в конструкторе проектов