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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также