Поделиться через


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

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

Что характеризует сборку с сильным именем?

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

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

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

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

Не стоит полагаться на сильные имена для безопасности. Они предоставляют только уникальную идентичность.

Почему использовать сильное имя для ваших сборок?

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

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

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

  • Вы не хотите отрицательно влиять на производительность приложений с помощью сборки, поэтому вы хотите, чтобы сборка была нейтральной для домена. Для этого требуется жёсткое именование, так как в глобальный кэш сборок должна быть установлена доменно-нейтральная сборка.

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

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

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

См. также