Глобальный кэш сборок
Примечание.
Эта статья относится к .NET Framework. Он не применяется к более новым реализациям .NET, включая .NET 6 и более поздние версии.
На каждом компьютере с установленной средой CLR имеется кэш кода на уровне компьютера, называемый глобальным кэшем сборок. В глобальном кэше сборок сохраняются сборки, специально предназначенные для совместного использования на компьютере несколькими приложениями.
Организовывать совместное использование сборок путем установки их в глобальный кэш следует только при необходимости. Как правило, зависимости между сборками следует сохранять закрытыми, а сами сборки нужно размещать в папке приложения, если они не предназначены для совместного использования. Кроме того, не обязательно устанавливать сборки в глобальный кэш сборок для доступа к ним из COM-взаимодействия или из неуправляемого кода.
Примечание.
Существуют случаи, в которых явно не требуется установка сборки в глобальный кэш сборок. Если одна из составляющих приложения сборок помещается в глобальный кэш сборок, то после этого вы не сможете скопировать или установить приложение с помощью команды xcopy путем копирования каталога приложения. Для этого также потребуется переместить сборку в глобальный кэш сборок.
Существует два способа развертывания сборки в глобальном кэше сборок.
Использование программы установки, предназначенной для работы с глобальным кэшем сборок. Данный подход является предпочтительным при установке сборок в глобальный кэш.
Используйте инструмент разработчика под названием средство глобального кэша сборок (Gacutil.exe) из Windows SDK.
Примечание.
В сценариях развертывания для установки сборок в глобальный кэш используйте установщик Windows. Средство глобального кэша сборок используйте только при разработке, поскольку оно не обеспечивает подсчет ссылок на сборку и другие возможности, предоставляемые при использовании установщика Windows.
Начиная с .NET Framework 4 расположение глобального кэша сборок по умолчанию — %windir%\Microsoft.NET\assembly. В более ранних версиях платформы .NET Framework расположение по умолчанию — %windir%\assembly.
Администраторы часто защищают папку systemroot с помощью списка управления доступом, определяющего права на запись и выполнение. Так как глобальный кэш сборок устанавливается в подкаталоге каталога SystemRoot, он наследует этот список управления доступом. Рекомендуется разрешать удаление файлов из глобального кэша сборок только пользователям, имеющим права доступа администратора.
Сборки, развернутые в глобальном кэше сборок, должны иметь строгие имена. При добавлении сборки в глобальный кэш сборок выполняется проверка целостности всех входящих в нее файлов. Кэш выполняет такую проверку целостности, чтобы гарантировать, что сборка не была изменена (например, если файл был изменен, но изменения не были отражены в манифесте сборки).