Работаем с Mono. Часть 1: Основные принципы Mono, инструменты, создание простейшего приложения
Mono — программная платформа, позволяющая разработчикам достаточно просто создавать развитые кроссплатформенные приложения. Технология Mono разрабатывается в виде open source реализации технологии .NET Framework от Microsoft и поддерживает стандарты ECMA-334 (стандарт языка C#) и ECMA-335 (стандарт среды исполнения (Common Language Runtime, CLI). Открытость указанных стандартов позволяет уменьшить проблемы создания кроссплатформенных приложений.
В базовом варианте Mono состоит из нескольких компонентов:
- Компилятор языка C# — компилятор с полной поддержкой версий 1.0 и 2.0 языка C#. Кроме того в последних версиях поддерживаются практически все возможности версии C# 3.0, а начиная с версии Mono 2.6 включена поддержка возможностей версии C# 4.0 (пока только как опция, полноценная поддержка заявлена в версии 2.8).
- Среда исполнения Mono — состоит из среды исполнения (CLI) непосредственно, компилятора среды исполнения (Just-In-Time, JIT), генератора машинного кода (Ahead-Of-Time, AOT), загрузчика сборок, сборщика мусора, подсистемы управления многопоточностью и компонентов поддержки взаимодействия между сборками и COM (или аналогами в Linux, например XCOM).
- Базовая библиотека классов — набор стандартных классов, совместимых с классами Microsoft .NET Framework.
- Библиотека классов Mono — набор классов, поддерживающих дополнительные функции для разработки Linux-приложений. Например, классы для поддержки Zip, OpenGL, Cairo, Gtk+.
Совместимость Mono и Microsoft .NET Framework
В текущей версии Mono поддерживаются следующие версии и возможности Microsoft .NET Framework:
DREAMTOWARDS СОЦИАЛЬНАЯ ПРОГРАММА Оказывается можно зайти за 100$!!! Давайте разбираться
- поддержка версии .NET 1.1:
- язык C# 1.0;
- базовые библиотеки версии 1.1: mscorlib, System, System.Xml;
- ASP .NET 1.1 (разработка веб-приложений);
- ADO .NET 1.1 (модель доступа к данным);
- Winforms/System.Drawing 1.1 (пользовательский интерфейс Microsoft Windows);
- базовые классы пространств имен System.Management (информация о системе, работа с устройствами) и System.EnterpriseServices (разработка масштабируемых бизнес-приложений, преимущественно на базе COM+ технологии) не поддерживаются в связи с отсутствием близких по идеологии технологий в Linux.
- поддержка версии .NET 2.0:
- язык C# 2.0 (поддержка дженериков (шаблонов, generics);
- базовые библиотеки версии 2.0: mscorlib, System, System.Xml;
- ASP .NET 2.0 (кроме WebParts);
- ADO .NET 2.0;
- Winforms/System.Drawing 2.0 (не поддерживаются языки с письмом справа налево);
- поддержка версий .NET 3.0 и 3.5:
- C# 3.0;
- System.Core (базовая библиотека классов);
- LINQ (Language Integrated Query, интегрированный язык запросов);
- ASP .NET 3.5;
- ASP .NET MVC (создание веб-приложений с поддержкой шаблона “модель-представление-поведение”);
- LINQ to SQL — поддержка большинства (но не полного комплекта) функций;
- WCF (Windows Communication Foundation) — частичная поддержка на уровне библиотек Silverlight 2.0;
- WPF (Windows Presentation Foundation) — не поддерживается и пока поддержка не планируется;
- WF (Workflow Foundation) — не поддерживается, планируется поддержка с версии WF4;
- поддержка версии .NET 4.0, реализованная в версии Mono в SVN:
- C# 4.0;
- ASP .NET 4.0 (пока частичная поддержка);
- LINQ 4.0.
Описание основных компонентов и возможностей Mono
Компилятор Mono C# поддерживает версии языков C# 1.0, 2.0 и 3.0. Для создания кода можно использовать один из нескольких вариантов компилятора, в зависимости от потребностей:
ПРОГРАММА ПЕРЕСЕЛЕНИЯ СООТЕЧЕСТВЕННИКОВ: опасные моменты, из-за которых можно все потерять.
- mcs — компилятор, поддерживающий версию 1.1 среды исполнения. Компилирует код на языках C# 1.0 и C#3.0 (без поддержки дженериков и всего, что с ними связано). Данный компилятор планируется исключить в версии Mono 2.8, как устаревший.
- gmcs — компилятор, поддерживающий версии от 2.0 до 3.5 среды исполнения и обладающий полной поддержкой C# 3.0.
- smcs — опциональный компилятор для создания Moonlight (аналог Microsoft Silverlight) приложений.
- dmcs — опциональный компилятор, реализованный в тестовом варианте в версии Mono 2.6 и планируемый к включению в версию 2.8. Поддерживает среду исполнения версии 4.0 и язык C# 4.0.
Начиная с версии Mono 2.2 реализована поддержка классов компилятора Mono.CSharp.Evaluator (сборка Mono.Sharp.dll) для создания собственных сервисов компиляции.
Среда исполнения Mono поддерживает инфраструктуру промежуточного языка CLI (Common Language Infrastructure), соответствующую стандарту ECMA-335. Виртуальная машина среды исполнения допускает возможность запуска приложений и сборок, скомпилированных в других системах (например, возможно запускать в Linux без перекомпиляции приложения, созданные при помощи Microsoft Visual Studio для исполнения в Microsoft Windows).
Также, вместо использования виртуальной машины, среда исполнения может быть интегрирована в приложение с целью создания встраиваемой системы, не требующей установки Mono для запуска и обладающей высоким быстродействием. При этом, в приложение включаются только необходимые компоненты среды исполнения.
В среде Mono реализован Ahead-Of-Time (AOT) компилятор промежуточного языка. Цель этого компилятора в том, чтобы уменьшить время запуска программы и оптимизировать ее код, путем компиляции промежуточного языка CLI в машинный код. Аналогом в Microsoft .NET Framework является утилита Ngen. Для запуска приложения в этом режиме можно воспользоваться опцией —aot среды исполнения (также можно включить полную оптимизацию кода при помощи опцее -O=all). Например:
mono -O=all –aot program.exe
В качестве сборщика мусора в данный момент используется Boehm’s GC, однако в текущей разрабатываемой ветке SVN присутствует совершенно новый сборщик мусора, разработанный специально для Mono.
Установка Mono
Mono входит в репозитории огромного количества дистрибутивов, поэтому проблем с установкой из репозитория возникнуть не должно. Другой вопрос, какие версии располагаются в репозиториях. На данный момент на сайте проекта Mono предлагается скачать бинарные файлы версии 2.4.x. Эти же версии лежат в репозиториях современных дистрибутивов. Последней стабильной версией Mono считается 2.6.3, которая имеется только в виде исходных текстов.
Если есть желание установить Mono 2.6.3, то придется заняться самостоятельной сборкой версии из исходных текстов.
В качестве подопытной системы выберем недавно вышедшую Ubuntu 10.04. Тем не менее пользователям других версий и дистрибутивов это не должно особенно огорчать, потому что разница будет только в менеджерах пакетов и именах пакетов.
Для чистоты эксперимента, чтобы определить все пакеты, которые нужны, возьмем систему Ubuntu 10.04 установленную с нуля и обновленную (при помощи Synaptic или aptitude) до текущего состояния.
Первым делом создадим каталог для исходных текстов и сборки проектов:
mkdir ~/projects/mono cd ~/projects/mono
Для работы с пространством имен System.Windows.Forms (на классах которого построен графический интерфейс операционных систем семейства Microsoft Windows) необходимо установить библиотеку libgdiplus, которая реализует функции Microsoft GDI+ для Mono. Взять исходные тексты этой библиотеки можно с сайта проекта Mono:
wget http://ftp.novell.com/pub/mono/sources/libgdiplus/libgdiplus-2.6.2.tar.bz2
Распакуем исходные тексты и перейдем в каталог проекта:
tar jxf libgdiplus-2.6.2.tar.bz2 cd libgdiplus-2.6.2
При базовой установке Ubuntu устанавливается минимальный набор инструментов для разработчика, поэтому необходимо проследить, чтобы нужные инструменты присутствовали в системе. Для установки и работы потребуются компилятор g++, парсер Bison, интерпретатор макроязыка M4, библиотека Glib 2.0, GetText для поддержки интернационализации. Для работы с Mono требуется также Pkg-config. При отсутствии в системе эти пакеты (и их зависимости) нужно будет установить. Для Ubuntu это делается командой:
sudo apt-get install libglib2.0-dev m4 bison gettext pkg-config
Для работы библиотеки libgdiplus нужна библиотека libcairo2 версии не ниже 1.6.4. Эта библиотека входит в состав исходных текстов libgdiplus и может быть скомпилирована совместно с ней, однако при наличии более свежей версии рекомендуется пользоваться именно ей. В репозиториях Ubuntu 10.04 лежит libcairo2 версии 1.8.10. Установим ее из репозитория:
sudo apt-get install libcairo2-dev
Остается только сконфигурировать и собрать libgdiplus. По умолчанию установка производится в каталог /usr/local/bin для библиотеки и /usr/local/include для заголовочных файлов, что не всегда удобно, так как в будущем понадобится настройка переменных окружения LD_LIBRARY_PATH и LD_RUN_PATH. Удобнее, если библиотеки и заголовочные файлы будут расположены в /usr/bin и /usr/include соответственно.
./configure –prefix=/usr make sudo make install
Скачиваем mono runtime:
cd .. wget http://ftp.novell.com/pub/mono/sources/mono/mono-2.6.3.tar.bz2 cd mono-2.6.3
Рассмотрим наиболее интересные параметры конфигурации исходных текстов:
—with-xen-opt=yes,no
Этот параметр установлен в yes по умолчанию. При этом mono оптимизмруется для работы под средствами виртуализации Xen. В реальной среде производительность несколько ниже. Мы в нашем случае будем использовать no.
—with-large-heap=yes,no
Возможность выделения приложением больших объемов памяти (свыше 3 Гб). По умолчанию no.
—with-moonlight=yes,no
Включение поддержки Moonlight — свободного аналога Microsoft Silverlight.
—with-libgdiplus=installed,sibling,
Местоположение библиотеки libgdiplus для поддержки классов System.Windows.Forms. Значение installed означает, что библиотека установлена в системе (как в нашем случае), sibling — исходные тексты библиотеки лежат в каталоге с текстами mono, — библиотека установлена по указанному пути (используется, если библиотека установлена в нестандартный каталог или установлено несколько разных версий в разных каталогах).
—enable-big-arrays
Включение поддержки больших массивов, у которых индекс выходит за пределы Int32.MaxValue. По умолчанию такие массивы не поддерживаются даже в 64-битных системах (в том числе и в Microsoft Windows для архитектуры x64).
—enable-parallel-mark
Включение многопоточного сборщика мусора при наличии нескольких процессоров. По умолчанию сборщик мусора однопоточный. Следует заметить, что разработчики Mono предупреждают, что возможность является экспериментальной и не протестирована тщательно.
Конфигурируем и устанавливаем Mono:
./configure –prefix=/usr –with-xen-opt=no –with-moonlight –with-libgdiplus=installed make sudo make install
В моем случае изначально сборка закончилась неудачно в связи с тем, что make почему-то не хватило прав, хотя собиралось все в домашнем каталоге пользователя. Если вдруг такое произошло, помогает sudo make вместо make.
Mono Runtime готов к работе.
Создание первого приложения
С целью протестировать работоспособность Mono создадим традиционное приложение Hello World с выводом в терминал и вариант с созданием окна.
Для вывода в терминал воспользуемся методом WriteLine класса Console.
cd ~/projects cat > hello_world1.cs > EOF
Скомпилируем программу с поддержкой .NET версии 1.1:
mcs hello_world1.cs
Или с поддержкой .NET версии 2.0:
gmcs hello_world1.cs
Компиляция должна пройти без ошибок и запуск:
mono hello_world1.exe
приводит к выводу в консоль сообщения “Hello World! This is our first Mono program”
Сделаем ознакомительное приложение с использованием графического интерфейса. В среде Linux уместнее всего было бы использовать библиотеки Gtk#, однако в данный момент эта библиотека не установлена и это будет темой одной из будущих статей. Воспользуемся библиотекой Winforms, которая входит в состав Mono по умолчанию. Работа с этой библиотекой также будет описана в будущих статьях, поэтому код дается без комментариев.
cat > hello_world2.cs public Hello() < Text=”Hello World! This is our first Mono program”; >> EOF
Скомпилируем программу с поддержкой .NET версии 1.1:
mcs hello_world2.cs -pkg:dotnet
Или с поддержкой .NET версии 2.0:
gmcs hello_world2.cs -pkg:dotnet
Не забываем указать ключ -pkg:dotnet, подключающий библиотеки, содержащие пространство имен System.Windows.Forms.
mono hello_world2.exe
на экране появится пустое окно с заголовком “Hello World! This is our first Mono program” и кнопками сворачивания, разворачивания и закрытия.
MoMA — анализатор “чужих” сборок
Как было сказано выше, Mono совместим с .NET Framework на уровне исполняемых файлов и сборок. Однако, как это часто бывает, запуск скомпилированных, например, в Microsoft Visual Studio программ заканчивается ошибочно. В этом случае не помешает определить, стало ли причиной ошибки отсутствие какой-либо библиотеки в среде Mono в Linux (и решить проблему установкой этой библиотеки) или проблема связана с тем, что та или иная возможность не поддерживается в Mono.
В этом поможет инструмент Mono Migration Analyzer (MoMA), который можно скачать с сайта проекта Mono.
Для запуска MoMA его нужно распаковать в отдельный каталог и запустить сборку MoMA.exe:
unzip -x moma2-6.zip cd MoMA mono MoMA.exe
Тестирование сборок на совместимость состоит из пяти шагов и интуитивно понятно, более того реальный шаг всего один — выбор сборок для тестирования, остальные шаги содержат справочную информацию, итоги тестирования и форму для сбора информации о том, как улучшить данный инструмент.
Следует отметить, что MoMA — инструмен достаточно простой, поэтому возможны варианты, что какие-то проблемы в коде найдены не будут, а также возможно нахождение проблемы, которая, тем не менее, не помешает исполнению кода.
Все проблемы, которые находит MoMA можно свести к четырем видам.
-
Missing Methods — отсутствующие методы.В сборке присутствует вызов методов, которые не имеют никакой реализации (в том числе даже заглушки) в Mono. Если такое приложение попытаться скомпилировать в Mono, это приведет к ошибке вида:
file1.cs(10,15): error CS0117: ‘xxxxx’ does not contain a definition for ‘yyyyy’
Бороться с этой проблемой можно двумя способами. Первый состоит в том, чтобы заменить отсутствующий метод другими методами, реализующими ту же задачу. Второй состоит в том, чтобы реализовать отсутствующий метод и, по возможности, предложить его для включения в новую версию Mono.
Работа с MoMA из командной строки
В случае, если использование графического интерфейса не нужно или невозможно, можно использовать MoMA из командной строки.
При этом указывается параметр —nogui, может быть указан параметр —out с указанием месторасположения отчета об анализе, а затем указывается одна или несколько анализируемых сборок. Например:
mono MoMA.exe —nogui —out Report.html App.exe ../Lib1.dll ../Lib2.dll Lib3.dll
Mono что за папка
Mono — проект по созданию полноценного воплощения системы .NET Framework на базе свободного программного обеспечения. Основной разработчик проекта Mono — корпорация Xamarin [3] , ранее Novell. Проект возглавляет Мигель де Икаса, известный разработчик, основатель проекта GNOME. Реализации Mono существуют для следующих операционных систем: Windows, Linux, BSD (FreeBSD, OpenBSD, NetBSD), Solaris, Mac OS X, Apple iOS, Wii [4] . Поддерживаются платформы: s390, SPARC, PowerPC, x86/x86-64, IA-64, ARM, Alpha, MIPS, HP PA [4] .
Состав и функциональность [ править | править код ]
Mono включает в себя компилятор языка C# — dmcs [5] , среду исполнения .NET — mono (с поддержкой JIT) и mint (без поддержки JIT), отладчик, а также ряд библиотек, включая реализацию WinForms, ADO.NET и ASP.NET, а также компиляторы smcs (для создания приложений для Moonlight) и vbc (для приложений, написанных на VB.NET).
В рамках проекта также разрабатываются привязки для графической библиотеки GTK+ на платформу .NET.
Также Mono содержит альтернативу структуре WPF-приложений (XAML + C# или любой другой язык, который поддерживается в данной среде исполнения). Данный язык называется Glade, при помощи него можно собирать GTK-приложения.
Mono может исполнять модули, написанные на языках C#, F#, Visual Basic .NET, Java, Boo, Nemerle, Python, JavaScript, Erlang, SmallTalk, Lisp, PHP и Object Pascal (при наличии компилятора в среде .Net/Mono). Ожидается также поддержка языков C, Ada 2005 и Eiffel.
Юридические вопросы [ править | править код ]
После заключения Microsoft договорённости с компанией Novell [6] платформа Mono была официально признана реализацией .NET на Unix-подобных операционных системах (Linux, Mac OS X и других). Однако договорённость касается только Novell и клиентов Novell; также технологии ASP.NET, ADO.NET и Windows.Forms не были стандартизированы ECMA/ISO, и использование их в Mono находится под угрозой юридических претензий со стороны Microsoft (претензии возможны только в странах, где существуют патенты на программное обеспечение [7] ). Mono предоставляет реализацию ASP.NET, ADO.NET и Windows.Forms, но в то же время рекомендует не использовать эти API. [7]
Принятая в проекте лицензия на компилятор и другие программы — GNU GPL. Лицензия на среду исполнения и другие библиотеки — GNU LGPL. Лицензия на библиотеки классов —MIT.
Компания Microsoft объявила, что стандарты C# (ECMA 334) и инфраструктуры CLI (ECMA 335) теперь попадают под действие документа Community Promise (Обещание Сообществу), официально заявляющего отсутствие патентных или иных претензий на стандартизированные таким образом разработки. Данный шаг снимает многочисленные противоречия, касающиеся платформы Mono, которая фактически является opensource реализацией этих стандартов, и дает ей иммунитет на случай, если патентный вопрос будет поднят вновь.
Данное заявление опубликовал Старший менеджер по связям с общественностью Департамента Стратегий платформ Peter Galli как ответ на недавние запросы Мигеля де Икасы относительно лицензирования стандартов ECMA 334 и 335. В нём, в частности, говорится, что, давая обещание сообществу, Microsoft добровольно отказывается от патентного преследования юридических и частных лиц производящих, использующих, распространяющих, рекламирующих, продающих любые оговоренные в патентах реализации, независимо от модели их разработки и распространения, включая открытые модели разработки, такие как LGPL и GPL.
При этом открытым остается вопрос реализации технологий, не упомянутых в Community Promise. В связи с этим вице-президент Novell Мигель де Икаса объявил, что с этого момента проект Mono будет разбит на две ветки:
AppData – что лежит в этом таинственном каталоге и как избавиться от всего ненужного в нем
Как восстановить контакты и переписку после увольнения
Каомодзи на Windows
Windows 10 на калькуляторе
Не работают наушники на компьютере Windows 10
Операционная система Windows скрывает в себе множество тайн, но некоторые из них более интересны, чем другие, и если вы возьметесь их распутывать, то можете получить неоспоримую пользу.
Возьмем, к примеру, каталог, который впервые появился в Windows Vista и о существовании которого мало кто подозревает. Причина заключается в том, что он скрыт от глаз пользователей, так как в нем хранится исключительно важная системная информация. Однако понимание его природы может помочь вам сэкономить драгоценное дисковое пространство на вашем основном разделе и, возможно, повысить производительность всей системы.
AppData (или Application Data) – это скрытая (по умолчанию) системная папка, подкаталог папки Users с личными файлами всех зарегистрированных пользователей. Папка содержит всю информацию, порожденную установленными программами на компьютере и невидима для пользователей, потому что (по крайней мере, в теории) хранящиеся в ней файлы не должны представлять для них никакого интереса.
Тем не менее, реальность часто расходится с первоначальным замыслом Microsoft. При продолжительном и активном использовании Windows без переустановки системы размер этой папки будет стремительно расти, и вскоре вы можете столкнуться с недостатком свободного пространства на системном разделе – особенно если вы используете SSD-устройство относительно скромного объема, на котором каждый мегабайт имеет значение.
Давайте подробно рассмотрим структуру AppData и выясним, какие из файлов, хранящихся в этой папке, имеют критическое значение, а какие нет.
Как уже упоминалось, AppData по умолчанию скрыта, поэтому, чтобы добраться до нее, вы должны будете изменить некоторые системные настройки Windows. Для этого откройте «Панель управления» и перейдите в раздел «Оформление и персонализация». Затем откройте диалоговое окно «Параметры папок» и на вкладке «Вид» в списке параметров найдите опцию «Скрытые файлы и папки». Теперь просто измените настройки по умолчанию («Не показывать скрытые файлы, папки и диски») на «Показывать скрытые файлы, папки и диски».
Это сделает видимой не только AppData, но и ряд других системных каталогов и файлов, а также файлы и папки, которые были скрыты вами.
AppData находится в папке C:Users, но обратите внимание, что каждый зарегистрированный в системе пользователь имеет свой собственный каталог AppData, так что ищите папку в директории с вашим именем пользователя.
По умолчанию в этом каталоге находятся три подкаталога: Local, LocalLow и Roaming. Каждый из них хранит данные различных профилей.
Local содержит файлы, созданные в процессе работы установленных программ. Эта информация строго специфична для конкретного пользователя компьютера и не может быть перемещена на новую машину. Здесь вы найдете и папку с именем Microsoft, содержащую историю всей активности Windows.
В Local находится и папка с временными файлами (Temp), созданными во время работы различных приложений. Ее содержимое (временные файлы) можно удалить полностью, так как очень часто эти записи являются ненужными и только занимают место на диске.
Папка Roaming хранит определенные пользовательские файлы, которые могут быть перенесены с компьютера на компьютер.
Папка LocalLow предназначена в основном для буферных данных, генерируемых Internet Explorer, Java и программами от Adobe.
Очень часто в этих подкаталогах AppData накапливается довольно много софтверных «отходов», которые со временем могут разрастись до невероятных размеров. Для очистки системы от всех этих мусорных файлов вовсе не обязательно лезть в глубины AppData. До папки с временными файлами, подлежащими удалению, можно добраться и более простым способом.
Если в адресной строке проводника написать shell:history и нажать Enter, вы мгновенно окажитесь в папке с историей Internet Explorer. shell:cache открывает директорию с офлайн буфером браузера, shell:cookies показывает все записанные файлы «куки», а с shell:sendto вы можете удалять и добавлять ярлыки в меню «Отправить».
Если вы хотите изучить более подробно содержимое папки AppData, то неоценимую пользу в этом вам может принести небольшой, но мощный инструмент WinDirStat . Он быстро просканирует ваш жесткий диск, а затем визуализирует распределение записанных на нем файлов в весьма привлекательном графическом виде, так что вы сможете легко ориентироваться, если один или большая группа однотипных файлов занимает слишком много места.
Ну а самый простой и лучший способ очистки не только AppData, но и всего ненужного на жестком диске, по-прежнему заключается в периодическом сканировании системы чудесным инструментом CCleaner от Piriform.
В системе Windows реестр имеет такие ключи, как:
для расположения точечных сетевых сборочных папок, отличных от gac.
Есть ли у моно-системы без выигрыша способ получить эти данные или считалось ли это неважным?
Реестр не является перекрестной платформой. Это также нехорошее место для хранения данных конфигурации. НЕ ИСПОЛЬЗУЙТЕ РЕГИСТРАЦИЮ В ЧЕТВЕРГЕ, ЕСЛИ ВЫ НЕ ДЕЛАЕТЕ С ЛЕГАЦИОННЫМ КОДОМ.
GAC должен отслеживать глобальные сборки для вас как в Mono, так и в .NET. Любые локальные сборки должны храниться вместе с остальной частью вашей программы.
Если вам действительно нужны эти места (и вам не следует), вы должны вручную указать эти местоположения в файле конфигурации.
Почему вы ищете физическое местоположение сборки, которая находится в GAC?
Для начала Mono в Linux сохраняет GAC как список файлов, путей и связей между ними. Большая часть кода, который создает базовую моно исполняемую среду, использует флаг времени компиляции с именем MONO_ASSEMBLIES. Это значение по умолчанию устанавливается в $prefix/lib в системе сборки.
В большинстве префиксов linux distros $установлено значение «/usr», поэтому MONO_ASSEMBLIES будет /usr/lib. Имея это в виду, фактические базовые пути для ПКК составляют $prefix/lib/mono/gac . Вы также можете установить переменную среды для mono ( MONO_GAC_PREFIX ), которая позволяет вам установить несколько базовых путей для GAC.
Источник: auto-technologies.ru
Папка .mono
На самом деле, лично для себя я выделяю три места, где хранится мусор, даже после удаления программ и игр.
%AppData% — папка содержит Roaming и Local, где уже есть ненужные папки. Удалять только то, что 100% уверен. Например, я нахожу у себя папки с Sony, Ubisoft, Origin и т.д., хотя программы давно удалил. Приходится доудалять. Но они все ровно мало весят.
%ProgramData% — здесь я редко нахожу остатки, но всё же нахожу. Зачастую это были лицензионные файлы или другая не существенная информация. То есть тоже не занимают много места.
По-настоящему много места могут занимать временные файлы в Roaming, в Temp, но удалять вручную их не советую, ибо возникнут проблемы.
Также Steam каким-то странным образом может набрать лишних 10+ гигов. Лично у меня это возникает всегда, даже если я не скачиваю дополнительный контент игр(с серверов, моды. ). Вчера даже удалял его минут 15, просто бесконечное число файлов с длинными и странными названиями. Как итог было 13 гигов мусора.
Но всё это пустяки. И удаление нескольких папок — сильно не меняет общую ситуацию, а может только испортить, удалив что-то важное.
Источник: coop-land.ru