Требования к системе семейства продуктов Visual Studio 2022
Просмотрите записи с мероприятия по запуску Visual Studio 2022, чтобы узнать о новых возможностях, услышать советы и скачать бесплатные цифровые образцы.
Обзор
На этой странице перечислены минимальные требования к системе для семейства продуктов Visual Studio 2022. Сведения о совместимости см. в разделе Целевая платформа и совместимость Visual Studio 2022. См. дополнительные сведения по повышению производительности Visual Studio.
Загрузка
Нажмите кнопку, чтобы скачать последнюю версию Visual Studio 2022. Инструкции по установке и обновлению Visual Studio 2022 см. в документации по обновлению до последнего выпуска Visual Studio 2022. Кроме того, см. инструкции по установке в автономном режиме.
Требования к системе для предыдущих версий Visual Studio см. в разделах по Visual Studio 2019, Visual Studio 2017, Visual Studio 2015 или Visual Studio 2013.
Как обстоят дела?
Мы будем рады узнать ваше мнение! Для устранения проблем сообщите нам о проблеме в правом верхнем углу установщика или в самой интегрированной среде разработки Visual Studio. Значок находится в правом верхнем углу. Вы можете отслеживать проблемы в сообществе разработчиков Visual Studio, где можно задать интересующие вопросы, найти нужные ответы и отправить предложения по продуктам. Вам доступна бесплатная поддержка в чате по вопросам с установкой.
Требования к системе Visual Studio 2022
Минимальные требования к системе относятся к следующим продуктам.
- Visual Studio Enterprise 2022.
- Visual Studio Professional 2022.
- Visual Studio Community 2022.
Поддерживаемые операционные системы
Visual Studio 2022 поддерживается в следующих 64-разрядных операционных системах:
- Минимальная поддерживаемая версия ОС Windows 11: Home, Pro, Pro education, Pro для рабочих станций, Enterprise и Education
- Поддерживаемые ОС Windows 11 можно найти здесь: Windows 11 Корпоративная и поддержка образования
- Поддерживаемые ОС Windows 10 можно найти здесь: Windows 10 Корпоративная и поддержка образования
- 32-разрядные и операционные системы ARM32.
- Windows 11 Домашняя в режиме S, Windows IoT Корпоративная, Windows 10 IoT Базовая, Windows 10 Корпоративная, выпуск LTSC, Windows 10 S и Windows 10 Team Edition. Вы можете использовать Visual Studio 2022 для сборки приложений, выполняемых в следующих выпусках Windows 10.
- Параметры интерфейса Сервера Интернета вещей и минимального сервера для Windows Server.
- Контейнеры Windows, за исключением Visual Studio Build Tools.
- Запуск в среде виртуальной машины без полной операционной системы Windows.
- Такие решения виртуализации приложений, как Microsoft App-V или MSIX для Windows, а также технологии виртуализации приложений сторонних производителей.
- Одновременное использование несколькими пользователями программного обеспечения на одном компьютере, включая компьютеры общей инфраструктуры виртуальных рабочих столов или пулы узлов Виртуального рабочего стола в составе пула.
Оборудование
Указания по повышению производительности см. в разделе Оптимизация производительности Visual Studio.
- Процессор ARM64 или x64; Четырехядерный или лучший рекомендуемый. Процессоры ARM 32 не поддерживаются.
- Не менее 4 ГБ ОЗУ. На используемые ресурсы влияет множество факторов; для стандартных профессиональных решений рекомендуется 16 ГБ ОЗУ.
- Windows 365: не менее 2 виртуальных ЦП и 8 ГБ ОЗУ. Рекомендуется 4 виртуальных ЦП и 16 ГБ ОЗУ.
- Место на жестком диске: от 850 ГБ до 210 ГБ свободного места в зависимости от установленных компонентов, обычно для установки требуется от 20 до 50 ГБ свободного места. Для повышения производительности рекомендуется устанавливать Windows и Visual Studio на твердотельном накопителе (SSD).
- Видеоадаптер с минимальным разрешением WXGA (1366 на 768 пикселей); для оптимальной работы Visual Studio рекомендуется разрешение 1920 на 1080 пикселей или выше.
- Минимальное разрешение предполагает масштабирование, параметры DPI и масштабирование текста на уровне 100 %. Если не задано значение 100 %, необходимо соответствующим образом масштабировать минимальное разрешение. Например, если задать для дисплея Windows значение параметра «Масштаб и макет» на устройстве Surface Book, которое имеет физический дисплей 3000 x 2000, значение 200 %, то для Visual Studio логическое разрешение экрана будет 1500 x 1000, что соответствует минимальным требованиям в 1366 x 768.
Поддерживаемые языки
Visual Studio доступна на следующих языках: английский, китайский (упрощенное и традиционное письмо), чешский, французский, немецкий, итальянский, японский, корейский, польский, португальский (Бразилия), русский, испанский и турецкий. Язык Visual Studio можно выбрать во время установки. Установщик Visual Studio доступен на тех же четырнадцати языках и будет соответствовать языку Windows (если он доступен).
Установщик интеграции Team Foundation Server с Office 2019 с Office доступен на десяти языках, поддерживаемых Visual Studio Team Foundation Server 2019.
Дополнительные требования и инструкции
- Для установки или обновления Visual Studio требуются права администратора.
- Дополнительные рекомендации и инструкции по установке, развертыванию, обновлению и настройке Visual Studio в организации см. в руководстве администратора Visual Studio.
- для установки Visual Studio требуется платформа .NET Framework 4.7.2 или более поздней версии. (для установки Visual Studio версии 17.8 и более ранних версий требуется платформа .NET Framework версии 4.5.2 или более поздней версии.) Для выполнения Visual Studio требуется платформа .NET Framework 4.8. Если платформа .NET Framework 4.8 еще не установлена, то будет выполнена ее установка.
- Для разработки универсальных приложений для Windows, включая проектирование, редактирование и отладку, требуется Windows 10. Windows Server 2019 и Windows Server 2016 могут использоваться для создания универсальных приложений для Windows из командной строки.
- Для установки Visual Studio необходима среда выполнения WebView2. Если она еще не установлена, то будет выполнена ее установка. Установка Visual Studio завершится сбоем, если не удастся успешно установить WebView2 (из-за ошибки установки или ограничений групповой политики на установку или обновление).
- Для интеграции Team Foundation Server 2019 с Office требуется Office 2016, Office 2013 или Office 2010.
Требования к системе для инструментов удаленной отладки и изолированного сборщика IntelliTrace для Visual Studio 2022
Для инструментов удаленной отладки и изолированного сборщика IntelliTrace предъявляются те же требования к системе, что и для Visual Studio, со следующими отличиями:
- Также поддерживаются в Windows 7, Windows Server 2008 с пакетом обновления 2 (SP2), Windows Server 2008 R2 с пакетом обновления 1 (SP1), Windows 10 в ARM, Windows 10 Корпоративная LTSC, Windows Server 2012 R2, Windows 8.1 и Windows Server 2012.
- При использовании архитектуры x86 или AMD64/x64 требуется процессор с тактовой частотой не ниже 1,6 ГГц
- Требуется 1 ГБ ОЗУ (1,5 ГБ при запуске на виртуальной машине)
- Требуется 1 ГБ доступного пространства на жестком диске
- Требуется разрешение экрана не ниже 1024 на 768
- Для получения наилучших результатов используйте средства диагностики с самым последним обновлением для вашей версии Visual Studio.
Microsoft Visual Studio Build Tools 2022: требования к системе
Для Build Tools предъявляются те же требования к системе, что и для Visual Studio, со следующими отличиями.
- Windows Server Core 2022
- Также устанавливается в рамках установки основных серверных компонентов (Server Core) для Windows Server 2016 и Windows Server 2019.
- Также устанавливается в контейнер Windows.
- Требуется от 2,3 до 60 ГБ доступного места на диске в зависимости от установленных компонентов.
Распространяемый пакет Microsoft Visual C++ 2015–2022: требования к системе
Чтобы скачать распространяемый компонент Visual C++ 2015–2022, см. страницу visualstudio.microsoft.com/downloads. Распространяемый компонент Visual C++ 2015-2022 поддерживает те же требования к системе, что и Visual Studio, со следующими отличиями:
- Также устанавливается во всех выпусках Windows 11, Windows 10, Windows Server 2022, Windows Server 2019 и Windows Server 2016; Windows Server 2012 R2; Windows Server 2012; Windows Server 2008 R2 с пакетом обновления 1 (SP1) и выпусках Windows Arm64.
- Также устанавливается в Windows 7 с пакетом обновления 1 (SP1), Windows Server 2008 R2 с пакетом обновления 1 (SP1), Windows Vista с пакетом обновления 2 (SP2), Windows Server 2008 с пакетом обновления 2 (SP2) для поддержки приложений, созданных с помощью средств Visual C++ 2017 и Visual C++ 2015.
- Требуется 1 ГБ ОЗУ (1,5 ГБ при запуске на виртуальной машине)
- Требуется 50 ГБ доступного пространства на жестком диске
Агент тестирования Microsoft Visual Studio 2022: требования к системе
Агент тестирования Visual Studio поддерживает те же требования к системе, что и Visual Studio, со следующими изменениями.
- Требуется процессор с тактовой частотой 2,6 ГГц или более. Рекомендуется четырехъядерный или с большим количеством ядер.
- Требуется 10 ГБ пространства на жестком диске
Microsoft Visual Studio Test Controller 2022: требования к системе
Visual Studio Test Controller поддерживает те же требования к системе, что и Visual Studio, со следующими изменениями.
- Требуется процессор с тактовой частотой 2,6 ГГц или более. Рекомендуется четырехъядерный или с большим количеством ядер.
- Требуется 10 ГБ пространства на жестком диске
Visual Studio Code
Visual Studio Code (VS Code) — это редактор кода для разных языков программирования. Он относительно немного весит, гибкий и удобный. В нем можно писать, форматировать и редактировать код на разных языках.

Освойте профессию «Веб-разработчик»
VS Code не стоит путать с Visual Studio — это IDE, очень мощная и масштабная, но одновременно с этим тяжеловесная. Названия похожи, потому что у обоих средств разработки один и тот же создатель, но продукты разные по своей сути. VS Code меньше весит, проще в освоении и подходит в том числе для начинающих разработчиков.
Редактор кода существует для всех популярных операционных систем: Windows, Linux и macOS. Он бесплатный, в отличие от большинства версий «старшего брата» Visual Studio.
Кто пользуется Visual Studio Code
С VS Code работают программисты на разных языках. Например, им активно пользуются веб-разработчики, пишущие на HTML/CSS, JavaScript, PHP. Но редактор поддерживает намного большее количество языков: Python, Go, Ruby, C#, TypeScript и так далее. Он работает и с расширениями и фреймворками для популярных языков — например, с React JS и Vue.js, с языками стилей SCSS и LESS, которые дополняют CSS.
В теории пользоваться VS Code может разработчик практически на любом из современных языков. Но на практике его применяют там, где не нужны мощности полноценной IDE.
Профессия / 12 месяцев
Веб-разработчик с нуляСоздавайте нужные любому бизнесу сервисы

Для чего нужен VS Code
VS Code позволяет легко писать, форматировать и редактировать код на разных языках. С его помощью можно быстро создать проект и структуру файлов в нем, он подсвечивает синтаксис кода и помогает автоматически править ошибки. В нем есть возможности для отладки и запуска кода на некоторых языках.
Редактор легко расширяется, поэтому к перечисленным функциям можно добавить новые — достаточно просто скачать нужное дополнение из официального каталога. Дополнения тоже распространяются бесплатно.
Где скачать и как установить VS Code
Скачивание
Visual Studio Code можно бесплатно скачать с официального сайта и установить как обычную программу. Надо просто выбрать версию: для Windows, Linux или macOS.

На главной странице официального сайта есть большая кнопка для скачивания в оптимальной конфигурации — она определяется автоматически в зависимости от параметров вашей системы. Для альтернативных вариантов загрузки есть ссылки внизу.
Если устанавливать редактор пока не хочется, а желание попробовать есть, можно воспользоваться онлайн-версией. Она не такая удобная и у человека меньше контроля над ней, но для старта ее может хватить. Но VS Code способен серьезно нагружать браузер, особенно если там открыто что-то ресурсоемкое.
Установка
После загрузки программы нужно запустить инсталлятор и следовать инструкциям на экране. Далее программа установится на ПК.

Запуск на слабых ПК
После завершения установки можно приступить к запуску программы. Однако стоит отметить, что не на каждом компьютере она запустится успешно. Это обусловлено тем, что программа требует значительных вычислительных ресурсов. Из-за этого на слабой машине возможно возникновение такой ситуации: вместо обычного интерфейса программы появляется лишь черный экран, и процессор начинает работать на полную мощность. Тем не менее, существует решение — необходимо открыть контекстное меню ярлыка программы, и в поле пути к исполняемому файлу добавить следующий флаг:
--disable-gpu.Установка русского языка
Для более удобного ознакомления можно установить русский язык интерфейса. Для этого выполните следующие шаги:

- Щелкните на значке расширений в поле поиска;
- Начните вводить «russian» и дождитесь появления пакета «Russian Language Pack for Visual Studio Code»;
- После этого нажмите кнопку Установить. Далее программа запросит перезапуск.
Теперь интерфейс программы стал намного более понятным на русском языке. Однако, если вы хорошо владеете английским языком, то переход на русский язык не является обязательным. Это позволит вам в случае возникновения каких-либо проблем быстрее находить решения в сети, так как большинство ресурсов и инструкций доступны именно на английском языке.

Интерфейс

В рабочей области открывается документ, в котором программист пишет код. Через верхнее меню можно получить доступ к разным функциям и возможностям. Через боковое меню открываются разделы контроля версий, установки дополнений, запуска и отладки кода.
В нижней части страницы можно открыть консоль. В нее будут выводиться результаты выполнения кода, разные сведения о сборке и найденных ошибках. В консоль можно писать и команды — правда, для многих из них есть горячие клавиши, а они быстрее.

Одновременно в VS Code можно открыть несколько файлов в разных вкладках. Экран рабочей области можно разделить на части, чтобы человек видел несколько файлов одновременно. Как в операционной системе, когда открыто несколько окон программ: одно справа, другое слева. Со всеми открытыми файлами можно работать.
Настройка Visual Studio Code
Для доступа к настройкам графического редактора можно воспользоваться сочетанием клавиш Ctrl+, или перейти по пути File → Preferences → Settings.

Затем можно переходить к настройке различных категорий параметров вручную. Чтобы избежать переключения между вкладками, нужные параметры можно просто вводить в строку поиска.
Другой метод настройки Visual Studio Code — редактирование файла settings.json. Этот способ позволяет тонко настраивать программу, но требует определенных навыков. Начинающим лучше избегать этот способ.
Новичкам в разработке не стоит слишком сильно менять настройки Visual Studio Code. При возникновении проблем и поиске решений в сети, советы чаще всего будут предоставлены для стандартных настроек, что может вызвать путаницу.
Visual Studio Code предоставляет ряд полезных настроек для автоматизации рабочего процесса:
- Автосохранение: Найти параметр «Files: Auto Save». Изменить на «afterDelay» и задать временной интервал — файлы будут автоматически сохраняться через заданный промежуток времени.
- Размер шрифта: Параметр «Font Size». По умолчанию 14, но его можно изменить на более удобный.
- Форматирование кода: Параметр «Format On Paste». Код будет автоматически форматироваться при вставке, помогая избежать проблем с лишними отступами.
- Удаление конечных пробелов: Параметр «Trim Trailing Whitespace». При сохранении документов автоматически удаляются пробелы в конце строк. Это помогает убрать лишние символы и соответствовать стандартам кодирования.
Также можно изменить цветовую схему интерфейса. Для этого нажмите CTRL+SHIFT+P, введите theme и выберите Preferences: Color Theme. Вас встретит список доступных тем, из которых можно выбирать.
Возможности Visual Studio Code
Написание и редактирование кода. Первое и главное назначение редактора — писать исходный код на каком-то из языков программирования, редактировать и сохранять его. Так же как редакторы текста оснащены функциями для форматирования контента, редактор кода позволяет структурировать и форматировать программы. Например, он подсвечивает синтаксис, выделяет ошибки, автоматически расставляет отступы. В нем есть и автодополнение: если ввести первые несколько букв команды, он предложит варианты, как можно ее закончить. В VS Code есть целая система для помощи в редактировании кода, ее компоненты сгруппированы под общим названием IntelliSense.
Автоматическое редактирование. Редактирование и исправление кода в VS Code можно автоматизировать. Существуют специальные плагины и расширения для редактора, которые автоматически исправляют мелкие ошибки в программе: неправильные отступы, именование, несоответствие стилю кода и так далее. Кстати, стиль кода можно задать в настройках. Конечно, сложную ошибку такой модуль не исправит: он не поймет, как это можно сделать. Но для устранения мелких недочетов возможность удобная.
Поиск, вставка и другое. Среди возможностей Visual Studio Code — быстрая навигация по документу и его редактирование. Например, строка поиска поддерживает в том числе регулярные выражения — формулы для разных текстовых сочетаний. С редактированием тоже удобно: можно написать сокращенную формулу той или иной команды, и редактор достроит ее сам. А можно, например, выделить код и закомментировать его одним сочетанием клавиш.

Станьте Frontend-разработчиком
и создавайте интерфейсы сервисов, которыми пользуются всеКонтроль версий. VS Code «из коробки» поддерживает систему контроля версий Git. Прямо из редактора можно закоммитить изменения или откатить коммит, добавить к нему комментарий или отправить в удаленный репозиторий. Для этого не нужно входить в консоль и набирать команды: все делается через визуальный интерфейс. Сделать коммит можно в несколько кликов в специальной боковой панели.
Установка дополнений. Одна из особенностей VS Code — он очень легко расширяется. Прямо из редактора можно перейти в каталог расширений и дополнений, найти в поиске то, что вам нужно, и установить. Так подключаются поддержка других языков, плагины для автоматического исправления, конфигураторы и много чего еще. Благодаря легкой расширяемости VS Code можно полностью настроить под себя и свои нужды.
Запуск кода. Изначально редактор позволяет запускать код только для малого количества языков. Но к нему есть дополнения, которые открывают такую возможность и для других. Чтобы воспользоваться ей, нужно установить соответствующее расширение и перезагрузить VS Code. После этого в интерфейсе редактора должны появиться кнопки для сборки и запуска. Кстати, изначально в нем есть целая вкладка под названием «Запуск и отладка».
Помощь в отладке. В VS Code есть встроенный отладчик для языка JavaScript и основанных на нем технологий, таких как TypeScript. Для других языков понадобится устанавливать расширение. Но в любом случае возможность интерактивной отладки в редакторе есть, и это удобно, потому что раньше так «умели» делать только IDE. Интерактивная отладка помогает пошагово выполнять код и на каждом шаге просматривать, как изменяются данные. Так легче обнаружить и устранить ошибку.
Горячие клавиши
Горячие клавиши позволяют применять те или иные функции, не заходя в меню. Достаточно просто нажать нужное сочетание на клавиатуре. В VS Code таких клавиш много, и их можно перенастроить под свои вкусы — как вам удобнее.
Горячая клавиша Действие Ctrl + N Создать новый файл Ctrl + O Открыть существующий файл Ctrl + S Сохранить файл Ctrl + Shift + S Сохранить файл как Ctrl + Z Отменить последнее действие Ctrl + Shift + Z Повторить отменённое действие Ctrl + X Вырезать выделенный текст Ctrl + C Копировать выделенный текст Ctrl + V Вставить скопированный/вырезанный текст Ctrl + F Найти текст в файле Ctrl + H Заменить текст в файле Ctrl + D Выделить следующее вхождение выделенного текста Ctrl + / Закомментировать/раскомментировать строку Ctrl + Shift + K Удалить текущую строку Ctrl + Shift + L Выделить все вхождения выделенного текста Ctrl + Shift + O Быстро перейти к символу Ctrl + P Быстро перейти к файлу Ctrl + ` Открыть/закрыть терминал Ctrl + B Показать/скрыть боковую панель Ctrl + Shift + X Открыть панель расширений F12 Перейти к определению Ctrl + F12 Показать список всех ссылок на текущий символ Shift + F12 Показать быстрый просмотр ссылок Ctrl + F11 Установить/снять точку останова F5 Запустить/перезапустить отладку F9 Установить/снять точку останова Вы можете настроить горячие клавиши в Visual Studio Code согласно своим предпочтениям, выбрав File (Файл) > Preferences (Настройки) > Keyboard Shortcuts (Горячие клавиши).
Установка плагинов
Плагины позволяют добавлять языки, отладчики и инструменты для поддержки рабочего процесса разработки.
Поиск плагинов
Расширения можно просматривать и устанавливать из самого приложения VS Code. Для этого нужно перейти в раздел Дополнения, либо воспользуйтесь значком в боковой панели, либо выберите команду Ctrl+Shift+X.

Каждое дополнение в данном списке сопровождается кратким описанием, указанием издателя, а также информацией о количестве загрузок и пятизвездочной шкале оценки. Вам предоставляется возможность выполнить клик по интересующему дополнению, чтобы перейти на страницу с подробностями, где можно узнать дополнительную информацию.
Установка дополнений
Для установки плагина, выберите кнопку Install (установить). После завершения установки кнопка Установить изменится на кнопку с изображением шестеренки Управление.
Возьмем, например, популярное дополнение TODO Highlight. Оно выделяет фрагменты текста вида ‘TODO:’ и ‘FIXME:’ в вашем исходном коде, чтобы помочь быстро обнаружить незавершенные участки.
В разделе Расширения (доступно по Ctrl+Shift+X) введите todo в поле поиска, чтобы отфильтровать результаты. Вы должны обнаружить дополнение в списке.

Помимо прочего, дополнение однозначно опознается по идентификаторам издателя. При выборе «TODO Highlight» откроется страница с подробностями, где можно найти идентификатор данного плагина, например, wayou.vscode-todo-highlight. Знание идентификатора дополнения полезно в случае с несколькими плагинами одинакового названия.
Чтобы увидеть «TODO Highlight» в действии, откройте любой файл с исходным кодом и добавьте текст ‘TODO:’. Вы увидите, что данный текст будет выделен:

Этот пример лишь один из способов установки и использования плагинов. В репозитории содержится множество расширений, поддерживающих сотни языков программирования и задач.
Выбор разнообразен: от полноценной поддержки языков, таких как Java, Python, Go и C++, до простых расширений, которые создают GUID, меняют цветовую тему или добавляют виртуальных питомцев в редактор.
На странице подробностей дополнения можно ознакомиться с README и изучить:
- Вкладки «Возможности» — список настроек, команд и горячих клавиш, языковых грамматик, отладчика и так далее.
- Вкладка «Изменения» — история изменений (CHANGELOG) репозитория дополнения, если она доступна.
- Вкладка «Зависимости» — перечисление зависимостей от других плагинов.
Преимущества Visual Studio Code
Простота освоения. У редактора интуитивно понятный интерфейс, его легко установить и настроить. А после этого им сразу можно начинать пользоваться. Единственной проблемой поначалу могут стать горячие клавиши и дополнительные настройки — они необычно организованы. Но со временем легко разобраться, особенно если вначале держать под рукой памятку или пользоваться туториалами.
Малый вес. По сравнению с IDE редактор быстро работает и мало весит, не так требователен к ресурсам компьютера. При этом он довольно функционален, а огромное количество расширений позволяет добавлять в него новые возможности.
Кроссплатформенность. Visual Studio Code есть для всех популярных операционных систем, так что с ним можно работать вне зависимости от ОС, которую вы предпочитаете. К тому же это позволяет быстрее и удобнее переносить проекты с одного устройства на другое.
Поддержка разных языков. Есть инструменты, которые предназначены специально для какого-то языка, например Python или C++. Visual Studio Code поддерживает огромное количество языков программирования, и они легко подключаются. Поэтому с его помощью можно вести проекты, написанные на нескольких языках одновременно.
Гибкость. У VS Code множество расширений и удобных функций. Помимо вещей, стандартных для редактора кода, вроде подсветки синтаксиса, он «умеет» много чего еще. Его можно легко и гибко настроить под себя в зависимости от потребностей разработчика и технологий, с которыми он работает.
Недостатки Visual Studio Code
Ограниченная функциональность. Конечно, это зависит от того, с чем сравнивать VS Code. По сравнению с рядом других редакторов он, наоборот, более функционален. Но если сравнивать с IDE — любой редактор проигрывает, так как возможности у него намного ниже.
А для некоторых языков возможности IDE критичны. Поэтому работать в редакторе кода для разработчиков на этих языках будет не очень удобно. Например, в VS Code есть модули для Java, но Java-разработчики все же предпочитают пользоваться специализированными средами. У них больше возможностей по работе со специфическими особенностями языка вроде перевода программы в байт-код.
Медленная работа. На старых компьютерах редактор может долго запускаться и работать медленнее. Особенно это характерно для устройств, где установлен жесткий диск HDD, а не твердотельный накопитель SSD, или мало оперативной памяти.
Так происходит из-за того, что VS Code написан на Electron — это фреймворк, который позволяет писать программы для ПК с помощью HTML/CSS и JavaScript. Внутри фреймворка – целый браузер, отвечающий за отображение HTML и CSS. Соответственно, написанные на Electron программы такие же ресурсоемкие, как обычные браузеры, а значит, на слабых устройствах могут работать медленно. Это справедливо и для VS Code.
Fullstack-разработчик на Python
Fullstack-разработчики могут в одиночку сделать IT-проект от архитектуры до интерфейса. Их навыки востребованы у работодателей, особенно в стартапах. Научитесь программировать на Python и JavaScript и создавайте сервисы с нуля.

Статьи по теме:
Как Visual Studio 2022 съела 100 Гб памяти и при чём здесь XML бомбы?

В апреле 2021 года Microsoft анонсировала новую версию своей IDE – Visual Studio 2022, попутно объявив, что она будет 64-битной. Сколько мы этого ждали — больше никаких ограничений по памяти в 4 Гб! Однако, как оказалось, есть нюансы.
Кстати, если вы пропустили, вот ссылка на тот пост с анонсом.
Но вернёмся к нашему вопросу из заголовка. Я воспроизвёл эту проблему на последней доступной на момент написания заметки версии Visual Studio 2022 Preview — 17.0.0 Preview 3.1.
Для воспроизведения достаточно:
- создать проект пустого решения (шаблон Blank Solution);
- добавить в него XML-файл.
После этого в созданный XML-файл нужно попробовать скопировать следующий текст:
Теперь идём заваривать кофе, возвращаемся и наблюдаем за тем, как Visual Studio отжирает всё больше и больше ОЗУ.

Могут возникнуть 2 вопроса:
- Зачем делать какие-то странные XML и добавлять их в проекты?
- Что здесь вообще происходит?
Что ж, давайте разбираться. Для этого нам нужно будет вспомнить, какие опасности может нести неаккуратная обработка XML-файлов, а также узнать, как со всем этим связан статический анализатор PVS-Studio.
SAST в PVS-Studio
Мы продолжаем активно развивать PVS-Studio как SAST решение. Если говорить про C# анализатор, то основной фокус по этому фронту – поддержка OWASP Top 10 2017 (последняя доступная на данный момент версия – с нетерпением ждём обновления). К слову, если вы пропустили, не так давно мы добавили taint анализ, о чём можно почитать здесь.
Собственно, для тестирования работы анализатора я и создал (точнее, попытался создать) соответствующий синтетический проект. Дело в том, что одна из категорий OWASP Top 10, над которой сейчас ведётся работа, – A4:2017-XML External Entities (XXE). Она затрагивает уязвимость приложений к различным атакам посредством неправильной обработки XML-файлов. Что подразумевается под неправильной обработкой? Например, излишнее доверие к входным данным (извечная проблема многих уязвимостей) и отсутствие должных ограничений в парсерах XML.
В итоге, если файлы окажутся скомпрометированы, это может вылиться в разные неприятные последствия. Здесь можно выделить 2 основные проблемы: раскрытие каких-то данных и отказ в обслуживании. Обе имеют соответствующие CWE:
- CWE-611: Improper Restriction of XML External Entity Reference
- CWE-776: Improper Restriction of Recursive Entity References in DTDs (‘XML Entity Expansion’)
CWE-611 оставим на другой раз, сегодня нас интересует CWE-776.
XML бомбы (billion laughs attack)
Я поясню только основную суть проблемы. Если у вас есть желание изучить проблему глубже – топик легко гуглится, не обессудьте.
Стандарт XML предусматривает использование DTD (document type definition). DTD даёт возможность использовать так называемые XML-сущности.
Синтаксис определения сущностей прост:
Получить значение сущности в дальнейшем можно следующим образом:
Нюанс состоит в том, что сущности могут раскрываться не только в строки (как в нашем случае — «Entity value»), но и в последовательности других сущностей. Например:
В итоге при раскрытии сущности ‘lol1’ мы получим строку следующего вида:
lollollollollollollollollollolМожно пойти дальше и определить сущность ‘lol2’, раскрыв её уже через ‘lol1’:
Тогда при раскрытии одной лишь сущности ‘lol2’ мы получим следующий выхлоп:
lollollollollollollollollollollollollollollollollollollollollollollollol lollollollollollollollollollollollollollollollollollollollollollollollol lollollollollollollollollollollollollollollollollollollollollollollollol lollollollollollollollollollollollollollollollollollollollollollollollol lollollollolПогрузимся на уровень ниже и определим сущность ‘lol3’?
Выхлоп при её раскрытии:
lollollollollollollollollollollollollollollollollollollollollollollollol lollollollollollollollollollollollollollollollollollollollollollollollol lollollollollollollollollollollollollollollollollollollollollollollollol lollollollollollollollollollollollollollollollollollollollollollollollol lollollollollollollollollollollollollollollollollollollollollollollollol lollollollollollollollollollollollollollollollollollollollollollollollol lollollollollollollollollollollollollollollollollollollollollollollollol lollollollollollollollollollollollollollollollollollollollollollollollol lollollollollollollollollollollollollollollollollollollollollollollollol lollollollollollollollollollollollollollollollollollollollollollollollol lollollollollollollollollollollollollollollollollollollollollollollollol lollollollollollollollollollollollollollollollollollollollollollollollol lollollollollollollollollollollollollollollollollollollollollollollollol lollollollollollollollollollollollollollollollollollollollollollollollol lollollollollollollollollollollollollollollollollollollollollollollollol lollollollollollollollollollollollollollollollollollollollollollollollol lollollollollollollollollollollollollollollollollollollollollollollollol .Собственно, сгенерированный по такому принципу XML-файл мы и использовали в начале статьи. Думаю, теперь понятно, откуда название «billion laughs». Получается, что если XML-парсер настроен неправильно (обрабатывает DTD и не имеет ограничений на максимальный размер сущностей), то при обработке подобной ‘бомбы’ ничего хорошего не случится.
Если говорить про C#, уязвимый код проще всего продемонстрировать на примере типа XmlReader:
var pathToXmlBomb = @"D:\XMLBomb.xml"; XmlReaderSettings rs = new XmlReaderSettings() < DtdProcessing = DtdProcessing.Parse, MaxCharactersFromEntities = 0 >; using var reader = XmlReader.Create(File.OpenRead(pathToXmlBomb), rs); while (reader.Read())
Сконфигурировав экземпляр XmlReader подобным образом, вы как бы говорите злоумышленнику этим кодом: «Давай, подорви меня!».
- разрешена обработка DTD;
- снято ограничение на максимальное количество символов из сущностей, то есть разрастание файла никак не ограничено.
По умолчанию, кстати, обработка DTD сущностей запрещена: свойство DtdProcessing имеет значение Prohibit, а на максимальное количество символов из сущностей стоит ограничение (начиная с .NET Framework 4.5.2). Так что в современном .NET всё меньше возможностей прострелить себе ногу. Хотя при неаккуратном конфигурировании парсеров это всё ещё возможно.
Возвращаясь к Visual Studio 2022
Похоже, что в Visual Studio 2022 при копировании нашей XML бомбы сработали как раз оба условия:
- запустилась обработка DTD;
- не стояло никаких ограничений, из-за чего объём потребляемой памяти пробил потолок.
Если посмотреть, что происходит в процессе в это время, можно найти подтверждение нашим предположениям.

В списке потоков видно, что основной поток как раз обрабатывает XML. К слову, из-за этого повис весь GUI и IDE никак не реагировала на попытки потыкать её палочкой.
Если посмотреть call stack потока VS Main, можно увидеть, что он как раз занят обработкой DTD (исполняется метод ParseDtd).

В ходе экспериментов у меня возник вопрос: а зачем Visual Studio вообще запускает процессинг DTD, почему просто не отображает XML как есть? Ответ пришёл в ходе экспериментов с ‘XML-бомбочкой’ (суть та же, но нагрузка поменьше).
Похоже, всё дело в том, чтобы отображать в редакторе «на лету» возможные значения сущностей.

Небольшие значения обрабатываются успешно, но разрастание XML приводит к проблемам.
Конечно, такая проблема не могла обойтись без написания мной баг-репорта.
Заключение
Вот так неожиданным образом удалось посмотреть, как на практике могут выглядеть уязвимости к XML-бомбам. Самое интересное, что удалось пощупать это не на каком-то абстрактном примере, а на вполне знакомом и популярном приложении.
Мы планируем добавить поиск кода, уязвимого к проблемам обработки XML-файлов, в PVS-Studio 7.15. Если же интересно посмотреть, что анализатор умеет уже сейчас, предлагаю загрузить его и попробовать на своих проектах. 😉
Как всегда, приглашаю подписываться на мой Twitter, чтобы не пропустить ничего интересного.
Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Sergey Vasiliev. How Visual Studio 2022 ate up 100 GB of memory and what XML bombs had to do with it.
Узнать размер расширения для Visual Studio Code
Я иногда уезжаю в места с очень плохим Интернетом, и бывает приходится устанавливать расширения для VS Code. И когда я устанавливаю расширение, то хочется узнать его вес, т.к. когда скачиваю большой файл, остальные программы на компьютере начинают плохо работать. Итак, есть ли способ всё-таки узнать размер расширения?
Отслеживать
задан 18 июн 2021 в 12:06
Caesium1337 Caesium1337
77 7 7 бронзовых знаков1. скачать и посмотреть. 2. может быть указан на странице скачивания. 3. после начала скачивания браузер обычно показывает общий размер файла (но случается, что и не показывает)
18 июн 2021 в 12:09
Вся проблема в том, что установка расширений происходит в самом VS Code. И почему-то у них не указан размер
