Сборки со строгими именамиStrong-named assemblies

При задании строгого имени для сборки для нее создается уникальный идентификатор, что позволяет избежать конфликтов сборок.Strong-naming an assembly creates a unique identity for the assembly, and can prevent assembly conflicts.

Что такое сборка со строгим именем?What makes a strong-named assembly?

Сборка со строгим именем создается с помощью закрытого ключа, который соответствует открытому ключу, распространяемому со сборкой, и самой сборке.A strong named assembly is generated by using the private key that corresponds to the public key distributed with the assembly, and the assembly itself. Сборка включает манифест сборки, который содержит имена и хэши всех файлов, из которых состоит сборка.The assembly includes the assembly manifest, which contains the names and hashes of all the files that make up the assembly. Сборки с одинаковым строгим именем должны быть идентичны.Assemblies that have the same strong name should be identical.

Задавать строгие имена для сборок можно с помощью Visual Studio или программы командной строки.You can strong-name assemblies by using Visual Studio or a command-line tool. Дополнительные сведения см. в разделе Практическое руководство. Подписывание сборки строгим именем и Sn.exe (средство создания строгих имен).For more information, see How to: Sign an assembly with a strong name or Sn.exe (Strong Name tool).

При создании сборки со строгим именем она содержит простое текстовое имя сборки, номер версии, дополнительные сведения о языке и языковых параметрах, цифровую подпись и открытый ключ, который соответствует закрытому ключу, используемому для подписи.When a strong-named assembly is created, it contains the simple text name of the assembly, the version number, optional culture information, a digital signature, and the public key that corresponds to the private key used for signing.

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

Строгие имена не являются средством обеспечения безопасности.Do not rely on strong names for security. Они служат только для однозначной идентификации.They provide a unique identity only.

Зачем присваивать сборкам строгие имена?Why strong-name your assemblies?

При использовании ссылки на сборку со строгим именем можно пользоваться определенными преимуществами, например отслеживанием версий и защитой имен.When you reference a strong-named assembly, you can expect certain benefits, such as versioning and naming protection. В .NET Framework сборки со строгими именами могут устанавливаться в глобальный кэш сборок, который необходим для реализации некоторых сценариев.In the .NET Framework, strong-named assemblies can be installed in the global assembly cache, which is required to enable some scenarios.

Сборки со строгими именами полезны в следующих сценариях:Strong-named assemblies are useful in the following scenarios:

  • Необходимо обеспечить возможность ссылок на ваши сборки сборкам со строгими именами или предоставить доступ friend к вашим сборкам из других сборок со строгими именами.You want to enable your assemblies to be referenced by strong-named assemblies, or you want to give friend access to your assemblies from other strong-named assemblies.

  • Приложению требуется доступ к различным версиям одной и той же сборки.An app needs access to different versions of the same assembly. Это означает, что требуются разные версии сборки для параллельной загрузки в одном домене приложений без возникновения конфликтов.This means you need different versions of an assembly to load side by side in the same app domain without conflict. (например, если в сборках с одним простым именем существуют разные расширения API, назначение строгих имен обеспечивает однозначную идентификацию всех версий сборки);For example, if different extensions of an API exist in assemblies that have the same simple name, strong-naming provides a unique identity for each version of the assembly.

  • Использование вашей сборки не должно отрицательно сказываться на производительности приложений, поэтому сборка должна быть нейтральной к доменам.You do not want to negatively affect performance of apps using your assembly, so you want the assembly to be domain neutral. Для этого требуется строгое именование, так как нейтральная к доменам сборка должна устанавливаться в глобальный кэш сборок.This requires strong-naming because a domain-neutral assembly must be installed in the global assembly cache.

  • Требуется применять централизованное обслуживание приложений с помощью политики издателя (это означает, что сборка должна устанавливаться в глобальном кэше сборок).You want to centralize servicing for your app by applying publisher policy, which means the assembly must be installed in the global assembly cache.

Если вы являетесь разработчиком открытого кода и хотите воспользоваться преимуществами идентификации, которые обеспечивают сборки со строгими именами, рекомендуется возвращать закрытый ключ, связанный со сборкой, в систему управления версиями.If you are an open-source developer and you want the identity benefits of a strong-named assembly, consider checking in the private key associated with an assembly to your source control system.

См. такжеSee also