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


Глобальный кэш сборок

Замечание

Эта статья связана с .NET Framework. Он не применяется к более новым реализациям .NET, включая .NET 6 и более поздние версии.

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

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

Замечание

Существуют сценарии, в которых явно не требуется устанавливать сборку в глобальный кэш сборок. Если вы размещаете одну из сборок, составляющих приложение в глобальном кэше сборок, вы больше не сможете реплицировать или установить приложение с помощью команды xcopy для копирования каталога приложения. Также необходимо переместить сборку в глобальный кэш сборок (Global Assembly Cache).

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

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

  • Используйте средство разработчика, называемое средством глобального кэша сборок (Gacutil.exe), предоставляемым пакетом SDK для Windows.

    Замечание

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

Начиная с .NET Framework 4, расположение по умолчанию для глобального кэша сборок %windir%\Microsoft.NET\assembly. В более ранних версиях .NET Framework расположение по умолчанию %windir%\assembly.

Администраторы часто защищают каталог systemroot с помощью списка управления доступом (ACL) для управления записью и выполнением доступа. Так как глобальный кэш сборок установлен в подкаталоге каталога systemroot, он наследует ACL этого каталога. Рекомендуется удалить файлы из глобального кэша сборок только пользователям с правами администратора.

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

См. также