Очистить кэш net framework
Основным фактором, влияющим на решение, загружать ли сборки в GAC, является поддержка версий. Для сборок в GAC поддержка версий централизуется на уровне машины и управляется администратором. Для сборок за пределами GAC поддержка версий осуществляется на основе приложений, так что каждое приложение само заботится о своих зависимостях и обновлениях (обычно поддерживая собственные копии всех сборок, на которые имеются ссылки).
Глобальный кеш сборок полезен в меньшинстве случаев, когда централизованная поддержка версий на уровне машины по-настоящему выгодна. Например, пусть имеется набор независимых подключаемых модулей, каждый из которых ссылается на некоторые разделяемые сборки. Мы предполагаем, что каждый подключаемый модуль находится в собственном каталоге, и по этой причине существует возможность наличия множества копий какой-то из разделяемых сборок. Далее предположим, что размещающее приложение требует загрузки каждой разделяемой сборки только один раз ради эффективности или совместимости типов. Тогда задача разрешения сборок для размещающего приложения существенно затрудняется, требуя тщательного планирования и понимания тонкостей контекстов загрузки сборок. Более простое решение в этом случае заключается в помещении разделяемых сборок в GAC. Это гарантирует, что среда CLR всегда будет принимать прямые и согласованные решения при разрешении сборок.
Тем не менее, в более типичных сценариях использования GAC лучше избегать, потому что это приводит к возникновению следующих сложностей.
• Развертывание XCOPY или ClickOnce больше невозможно; для установки приложения потребуются административные привилегии.
• Для обновления сборок в GAC также нужны административные привилегии.
• Применение GAC может усложнить разработку и тестирование, поскольку механизм загрузки сборок CLR (fusion) всегда отдает предпочтение сборкам GAC перед локальными копиями.
• Поддержка версий и выполнение бок о бок требует некоторого планирования, и какая-то ошибка может нарушить работу других приложений.
В качестве положительной стороны, GAC может улучшить показатели времени запуска для очень крупных сборок, т.к. CLR проверяет подписи сборок в GAC только при их установке туда, а не каждый раз, когда сборка загружается. В процентном отношении это имеет значение, если для сборок генерируются образы в машинном коде с помощью инструмента gltg.ехе с выбором неперекрывающихся базовых адресов.
Можно ли удалять net framework
Конечно да, кроме конечно той версии, которая идет в операционной системе Windows по умолчанию, так например, в Windows 7, это версия 3,5, для восьмерки это уже 4 версия и так далее. Поэтому при необходимости, удалять не то, что можно, но и нужно, особенно если от этого зависит работа ПО или сервиса.
Как полностью удалить net framework с компьютера
И так перед деинсталляцией, вы точно выяснили, что причина поломок и багов именно в данном компоненте, как например у меня была ошибка WAS 5011 был фремверк, требующий сноса. Ниже я покажу варианты, под любые операционные системы.
Отключение net framework 3.5
Net framework 3.5 можно удалять, только в Windows XP, но так как на мой взгляд она уже морально и по понятным причинам устарела, я ее не буду рассматривать. В более старших версиях операционных систем Windows 7 - 10, данный фремверк можно, только отключать. Делается это очень просто. Откройте панель управления, в Windows 7 ее найти можно в пуске, в восьмерке и 10 через правый клик по кнопке "Пуск", но самый универсальный метод, это нажать:
Теперь для удобства сделаем крупное отображение значков и выберем пункт "Программы и компоненты"
В левом углу, вы увидите пункт "Включить или отключить компоненты Windows"
Снимаем галку на против ".NET Framework 3.5 (Включает .NET 2.0 и 3.0)". У вас начнется процесс его "удаления", он останется в системе как отключенный компонент. Возможно вас попросят о перезагрузке.
Удаление пакета Framework версий 4.0-4.5
В отличии от 4,7 данный пакет легко находится среди списка всех установленных программ, вот вам пример Windows 7, где в списке "Удаление или изменение программ" вы легко сможете найти его и деинсталлировать с помощью соответствующих кнопок.
У вас откроется дополнительное окно с мастером по обслуживанию, выбираем пункт "Удалить .NET Framework 4.5.1 с этого компьютера"
С помощью утилиты NET Framework Cleanup Tool
Если нужно красиво и быстро удалить net framework, то можно воспользоваться бесплатной утилитой NET Framework Cleanup Tool от компании Microsoft.
Запускаете, я буду удалять net framework в Windows 8.1. На первом шаге, вам нужно согласиться с запуском утилиты.
Соглашаемся с лицензионным соглашением, нажимая "Yes".
Все у вас в итоге появится скромное окно с выбором удаляемой версии .NET Framework, после чего нажимаем "Cleanup Now"
Чем хорошо, утилита, так же чистит и папки и ключи реестра.
Тихий режим работы
Автоматический режим работы
Коды возврата
- 0 — Удаление завершено успешно
- 3010 — Удаление прошло успешно и требуется перезагрузка для завершения процесса
- 1 — Программе требуются права администратора
- 2 — Файл cleanup.ini не был найден в папке вместе с cleanup.exe
- 3 — Невозможно удалить данную версию, поскольку она является компонентом системы
- 4 — Указанного наименования версии нет в файле cleanup.ini
- 100 — Удаление было запущено, но потерпело неудачу
- 1602 — Удаление было отменено.
Удаление NET Framework в Windows Server
В Windows Server, процедура похожая, для версии 3,5 и 4,5 это отключение компонента через диспетчер сервера. Вот вам пример 2012 R2. В 2008 R2, версию 4,5 таким образом отключить не получиться.
Я надеюсь, что данные методы окажутся вам полезными и вы сможете спокойно удалить или отключить нужную версию фремверка.
Для рассмотрения механизма кэширования возьмем какую-нибудь простенькую задачу. Допустим, нам надо кэшировать профиль пользователя или некоторую информацию о пользователе, которая может не изменяться в течение более долгого периода времени, и поэтому эту информацию мы можем кэшировать, чтобы в будущем избежать лишних обращений к бд.
Вначале добавим в проект в папку Models новый класс User , который будет описывать используемые данные:
Для взаимодействия с MS SQL Server через Entity Framework добавим в проект через Nuget пакет Microsoft.EntityFrameworkCore.SqlServer . А затем добавим в папку Models класс контекста данных ApplicationContext :
Для взаимодействия с контекстом и бд создадим специальный сервис. Для этого вначале добавим в проект папку Services и в ней определим новый класс UserService :
Данный сервис через встроенный механизм внедрения зависимостей будет получать контекст данных и использовать его для взаимодействия с бд. Кроме того, данный класс реализует логику кэширования.
Через встроенный механизм внедрения зависимостей в конструкторе мы можем получить объект кэша IMemoryCache. Применяя методы интефейса IMemoryCache, мы можем управлять кэшем:
bool TryGetValue(object key, out object value) : пытаемся получить элемент по ключу key. При успешном получении параметр value заполняется полученным элементом, а метод возвращает true
object Get(object key) : дополнительный метод расширения, который получает по ключу key элемент и возвращает его
void Remove(object key) : удаляет из кэша элемент по ключу key
object Set(object key, object value, MemoryCacheEntryOptions options) : добавляет в кэш элемент с ключом key и значением value, применяя опции кэширования MemoryCacheEntryOptions
По сути встроенная реализация интерфейса IMemoryCache - класс MemoryCache, который используется по умолчанию, инкапсулирует все объекты кэша в виде словаря Dictionary.
Здесь же кэширование реализуется в двух случаях: при получение объекта по id из бд и при добавлении этого объекта.
При добавлении объект вначале добавляется в базу данных, и в случае удачного добавления, также добавляется в кэш:
При сохранении объекта в кэше в качестве его ключа выступает значение свойства Id.
С помощью параметра AbsoluteExpirationRelativeToNow здесь устанавливатся время кэширования - 5 минут.
При получении объекта по id вначале пытаемся найти этот объект в кэше, и если там не оказалось, то извлеаем его и бд и затем добавляем в кэш.
Если ключ в кэше был найден, то в объект user передается извлекаемое из кэша значение, а метод TryGetValue() возвращает true. Для установки времени кэширования здесь применяется альтернативный способ - метод SetAbsoluteExpiration, который в данном случае таже устанавливает 5 минут.
В итоге у нас получится следующая структура проекта:
Затем нам надо зарегистрировать сервисы кэширования и entity framework и применить компонент middleware в классе Startup :
Прежде всего для добавления возможности кэширования нам надо добавить сервис в методе ConfigureServices() :
По сути этот сервис устанавливает зависимость для IMemoryCache, создавая объект синглтон:
И в классе контроллера HomeController определим следующий код:
В итоге при первом обращении к приложению данные будут извлекаться из базы данных и сохраняться в кэш. При всех последующих обращениях в пределах времени кэширования (в данном случае в течение 5 минут) данные будут извлекаться из кэша:
Для рассмотрения механизма кэширования возьмем какую-нибудь простенькую задачу. Допустим, нам надо кэшировать профиль пользователя или некоторую информацию о пользователе, которая может не изменяться в течение более долгого периода времени, и поэтому эту информацию мы можем кэшировать, чтобы в будущем избежать лишних обращений к бд.
Вначале добавим в проект в папку Models новый класс User , который будет описывать используемые данные:
Для взаимодействия с MS SQL Server через Entity Framework добавим в проект через Nuget пакет Microsoft.EntityFrameworkCore.SqlServer . А затем добавим в папку Models класс контекста данных ApplicationContext :
Для взаимодействия с контекстом и бд создадим специальный сервис. Для этого вначале добавим в проект папку Services и в ней определим новый класс UserService :
Данный сервис через встроенный механизм внедрения зависимостей будет получать контекст данных и использовать его для взаимодействия с бд. Кроме того, данный класс реализует логику кэширования.
Через встроенный механизм внедрения зависимостей в конструкторе мы можем получить объект кэша IMemoryCache. Применяя методы интефейса IMemoryCache, мы можем управлять кэшем:
bool TryGetValue(object key, out object value) : пытаемся получить элемент по ключу key. При успешном получении параметр value заполняется полученным элементом, а метод возвращает true
object Get(object key) : дополнительный метод расширения, который получает по ключу key элемент и возвращает его
void Remove(object key) : удаляет из кэша элемент по ключу key
object Set(object key, object value, MemoryCacheEntryOptions options) : добавляет в кэш элемент с ключом key и значением value, применяя опции кэширования MemoryCacheEntryOptions
По сути встроенная реализация интерфейса IMemoryCache - класс MemoryCache, который используется по умолчанию, инкапсулирует все объекты кэша в виде словаря Dictionary.
Здесь же кэширование реализуется в двух случаях: при получение объекта по id из бд и при добавлении этого объекта.
При добавлении объект вначале добавляется в базу данных, и в случае удачного добавления, также добавляется в кэш:
При сохранении объекта в кэше в качестве его ключа выступает значение свойства Id.
С помощью параметра AbsoluteExpirationRelativeToNow здесь устанавливатся время кэширования - 5 минут.
При получении объекта по id вначале пытаемся найти этот объект в кэше, и если там не оказалось, то извлеаем его и бд и затем добавляем в кэш.
Если ключ в кэше был найден, то в объект user передается извлекаемое из кэша значение, а метод TryGetValue() возвращает true. Для установки времени кэширования здесь применяется альтернативный способ - метод SetAbsoluteExpiration, который в данном случае таже устанавливает 5 минут.
В итоге у нас получится следующая структура проекта:
Затем нам надо зарегистрировать сервисы кэширования и entity framework и применить компонент middleware в классе Startup :
Прежде всего для добавления возможности кэширования нам надо добавить сервис в методе ConfigureServices() :
По сути этот сервис устанавливает зависимость для IMemoryCache, создавая объект синглтон:
И в классе контроллера HomeController определим следующий код:
В итоге при первом обращении к приложению данные будут извлекаться из базы данных и сохраняться в кэш. При всех последующих обращениях в пределах времени кэширования (в данном случае в течение 5 минут) данные будут извлекаться из кэша:
Можно ли удалять net framework
Конечно да, кроме конечно той версии, которая идет в операционной системе Windows по умолчанию, так например, в Windows 7, это версия 3,5, для восьмерки это уже 4 версия и так далее. Поэтому при необходимости, удалять не то, что можно, но и нужно, особенно если от этого зависит работа ПО или сервиса.
Как полностью удалить net framework с компьютера
И так перед деинсталляцией, вы точно выяснили, что причина поломок и багов именно в данном компоненте, как например у меня была ошибка WAS 5011 был фремверк, требующий сноса. Ниже я покажу варианты, под любые операционные системы.
Отключение net framework 3.5
Net framework 3.5 можно удалять, только в Windows XP, но так как на мой взгляд она уже морально и по понятным причинам устарела, я ее не буду рассматривать. В более старших версиях операционных систем Windows 7 - 10, данный фремверк можно, только отключать. Делается это очень просто. Откройте панель управления, в Windows 7 ее найти можно в пуске, в восьмерке и 10 через правый клик по кнопке "Пуск", но самый универсальный метод, это нажать:
Теперь для удобства сделаем крупное отображение значков и выберем пункт "Программы и компоненты"
В левом углу, вы увидите пункт "Включить или отключить компоненты Windows"
Снимаем галку на против ".NET Framework 3.5 (Включает .NET 2.0 и 3.0)". У вас начнется процесс его "удаления", он останется в системе как отключенный компонент. Возможно вас попросят о перезагрузке.
Удаление пакета Framework версий 4.0-4.5
В отличии от 4,7 данный пакет легко находится среди списка всех установленных программ, вот вам пример Windows 7, где в списке "Удаление или изменение программ" вы легко сможете найти его и деинсталлировать с помощью соответствующих кнопок.
У вас откроется дополнительное окно с мастером по обслуживанию, выбираем пункт "Удалить .NET Framework 4.5.1 с этого компьютера"
С помощью утилиты NET Framework Cleanup Tool
Если нужно красиво и быстро удалить net framework, то можно воспользоваться бесплатной утилитой NET Framework Cleanup Tool от компании Microsoft.
Запускаете, я буду удалять net framework в Windows 8.1. На первом шаге, вам нужно согласиться с запуском утилиты.
Соглашаемся с лицензионным соглашением, нажимая "Yes".
Все у вас в итоге появится скромное окно с выбором удаляемой версии .NET Framework, после чего нажимаем "Cleanup Now"
Чем хорошо, утилита, так же чистит и папки и ключи реестра.
Тихий режим работы
Автоматический режим работы
Коды возврата
- 0 — Удаление завершено успешно
- 3010 — Удаление прошло успешно и требуется перезагрузка для завершения процесса
- 1 — Программе требуются права администратора
- 2 — Файл cleanup.ini не был найден в папке вместе с cleanup.exe
- 3 — Невозможно удалить данную версию, поскольку она является компонентом системы
- 4 — Указанного наименования версии нет в файле cleanup.ini
- 100 — Удаление было запущено, но потерпело неудачу
- 1602 — Удаление было отменено.
Удаление NET Framework в Windows Server
В Windows Server, процедура похожая, для версии 3,5 и 4,5 это отключение компонента через диспетчер сервера. Вот вам пример 2012 R2. В 2008 R2, версию 4,5 таким образом отключить не получиться.
Я надеюсь, что данные методы окажутся вам полезными и вы сможете спокойно удалить или отключить нужную версию фремверка.
Читайте также: