Сборки со строгими именами

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

Что такое сборка со строгим именем?

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

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

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

Предупреждение

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

Зачем присваивать сборкам строгие имена?

В .NET Framework сборки со строгими именами полезны в следующих сценариях:

  • Необходимо обеспечить возможность ссылок на ваши сборки сборкам со строгими именами или предоставить доступ friend к вашим сборкам из других сборок со строгими именами.

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

  • Использование вашей сборки не должно отрицательно сказываться на производительности приложений, поэтому сборка должна быть нейтральной к доменам. Для этого требуется строгое именование, так как нейтральная к доменам сборка должна устанавливаться в глобальный кэш сборок.

  • Требуется применять централизованное обслуживание приложений с помощью политики издателя (это означает, что сборка должна устанавливаться в глобальном кэше сборок).

Для .NET Core и .NET 5+ сборки со строгими именами не предоставляют существенных преимуществ. Среда выполнения никогда не проверяет подпись строгого имени и не использует строгое имя для привязки сборки.

Если вы являетесь разработчиком открытого кода и хотите воспользоваться преимуществами идентификации, которые предоставляют сборки со строгими именами, для обеспечения лучшей совместимости с .NET Framework, рекомендуется возвращать закрытый ключ, связанный со сборкой, в систему управления версиями.

См. также