Show / Hide Table of Contents

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

Note

Хотя .NET Core поддерживает сборки со строгими именами и все сборки в библиотеке .NET Core подписаны, большинству сборок сторонних разработчиков строгие имена не требуются. Дополнительные сведения см. в разделе Подпись строгим именем в GitHub.

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

  • С использованием Подписывание в диалоговом окне Свойства проекта в Visual Studio. Это самый простой и удобный способ подписать сборку строгим именем.

  • С использованием компоновщика сборок (Al.exe), который связывает модуль кода .NET Framework ( NETMODULE -файл) с файлом ключа.

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

  • С использованием параметров компилятора.

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

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

  1. В обозревателе решений откройте контекстное меню проекта и выберите Свойства.

  2. Перейдите на вкладку Подписывание .

  3. Выберите поле Подписать сборку .

  4. В поле Выберите файл ключа строгого имени нажмите кнопку Обзор , после чего выберите файл ключа. Чтобы создать файл ключа, выберите Создать и введите его имя в диалоговом окне Создание ключа строгого имени.

Note

Чтобы отложить подпись сборки, выберите файл открытого ключа.

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

В командной строке разработчика для Visual Studio введите следующую команду:

al /out: <assemblyName> <moduleName> /keyfile: <keyfileName>

Где:

  • assemblyName — это имя строго подписанной сборки (файл DLL или EXE ), которая будет создана компоновщиком сборок.

  • moduleName — это имя модуля кода .NET Framework ( NETMODULE -файла), который содержит один или несколько типов. NETMODULE -файл можно создать путем компиляции кода с параметром /target:module в C# или Visual Basic.

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

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

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

Дополнительные сведения об использовании этого инструмента см. в разделе Компоновщик сборок.

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

  1. Добавьте System.Reflection.AssemblyKeyFileAttribute или AssemblyKeyNameAttribute в файл исходного кода и укажите имя файла или контейнера, содержащего пару ключей, которая используется при подписи сборки строгим именем.

  2. Компилируйте файл исходного кода в обычном режиме.

    Note

    Компиляторы C# и Visual Basic выдают предупреждения (CS1699 и BC41008, соответственно), если в исходном коде встречается AssemblyKeyFileAttribute или AssemblyKeyNameAttribute . Эти предупреждения можно игнорировать.

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

[assembly:AssemblyKeyFileAttribute("keyfile.snk")];
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
<Assembly:AssemblyKeyFileAttribute("keyfile.snk")>

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

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

Компилируйте файлы исходного кода с помощью параметра компилятора /keyfile или /delaysign в C# и Visual Basic либо параметра компоновщика /KEYFILE или /DELAYSIGN в C++. После имени параметра добавьте двоеточие и имя файла ключей. При использовании компиляторов, работающих в режиме командной строки, можно скопировать файл ключей в каталог, содержащий файлы исходного кода.

Подробные сведения об отложенной подписи см. в разделе Отложенная подпись сборки.

В следующем примере используется компилятор C# и сборка UtilityLibrary.dll подписывается строгим именем с помощью файла ключа sgKey.snk.

csc /t:library UtilityLibrary.cs /keyfile:sgKey.snk  

См. также

  • Создание и использование сборок со строгими именами
  • Практическое руководство. Создание пары открытого и закрытого ключей
  • Al.exe (компоновщик сборок)
  • Отложенная подпись сборки
  • Управление подписыванием сборок и манифестов
  • Страница "Подписывание" в конструкторе проектов
Back to top Неофициальная документация по .NET на русском языке. Лицензия: CC-BY 4.0. Основано на документации по .NET с Microsoft Docs
Generated by DocFX