Visual studio сколько весит
Перейти к содержимому

Visual studio сколько весит

  • автор:

Узнать размер расширения для Visual Studio Code

Я иногда уезжаю в места с очень плохим Интернетом, и бывает приходится устанавливать расширения для VS Code. И когда я устанавливаю расширение, то хочется узнать его вес, т.к. когда скачиваю большой файл, остальные программы на компьютере начинают плохо работать. Итак, есть ли способ всё-таки узнать размер расширения?

Отслеживать
задан 18 июн 2021 в 12:06
Caesium1337 Caesium1337
77 7 7 бронзовых знаков

1. скачать и посмотреть. 2. может быть указан на странице скачивания. 3. после начала скачивания браузер обычно показывает общий размер файла (но случается, что и не показывает)

18 июн 2021 в 12:09

Вся проблема в том, что установка расширений происходит в самом VS Code. И почему-то у них не указан размер

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

0865_VS2022_XMLBomb_ru/image1.png

В апреле 2021 года Microsoft анонсировала новую версию своей IDE – Visual Studio 2022, попутно объявив, что она будет 64-битной. Сколько мы этого ждали — больше никаких ограничений по памяти в 4 Гб! Однако, как оказалось, есть нюансы.

Кстати, если вы пропустили, вот ссылка на тот пост с анонсом.

Но вернёмся к нашему вопросу из заголовка. Я воспроизвёл эту проблему на последней доступной на момент написания заметки версии Visual Studio 2022 Preview — 17.0.0 Preview 3.1.

Для воспроизведения достаточно:

  • создать проект пустого решения (шаблон Blank Solution);
  • добавить в него XML-файл.

После этого в созданный XML-файл нужно попробовать скопировать следующий текст:

Теперь идём заваривать кофе, возвращаемся и наблюдаем за тем, как Visual Studio отжирает всё больше и больше ОЗУ.

0865_VS2022_XMLBomb_ru/image2.png

Могут возникнуть 2 вопроса:

  1. Зачем делать какие-то странные XML и добавлять их в проекты?
  2. Что здесь вообще происходит?

Что ж, давайте разбираться. Для этого нам нужно будет вспомнить, какие опасности может нести неаккуратная обработка 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;
  • не стояло никаких ограничений, из-за чего объём потребляемой памяти пробил потолок.

Если посмотреть, что происходит в процессе в это время, можно найти подтверждение нашим предположениям.

0865_VS2022_XMLBomb_ru/image3.png

В списке потоков видно, что основной поток как раз обрабатывает XML. К слову, из-за этого повис весь GUI и IDE никак не реагировала на попытки потыкать её палочкой.

Если посмотреть call stack потока VS Main, можно увидеть, что он как раз занят обработкой DTD (исполняется метод ParseDtd).

0865_VS2022_XMLBomb_ru/image4.png

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

Похоже, всё дело в том, чтобы отображать в редакторе «на лету» возможные значения сущностей.

0865_VS2022_XMLBomb_ru/image5.png

Небольшие значения обрабатываются успешно, но разрастание 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?

Программа на диске весит примерно 4 гигабайта и требует подключение к интернету. При стандартной установке ей нужно 10гб,а при полной 43!. Сколько гигабайт будет скачано при установке в обеих случаях? Боюсь, что не хватит трафика

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

QT для Visual Studio 2013 — трудности установки
Доброго времени суток , столкнулся с проблемой при установке Qt. Загрузив версию для VS с.

Скачать Visual Studio для оффлайн установки
Доброго времени суток! Хочу скачать образ студии для оффлайн установки, делаю по примеру с MSDN.

Не выбирается путь установки для Visual Studio 2015
При установке Visual Studio 2015 не дает выбрать папку. Как можно решить эту проблему ?

7595 / 6418 / 2924
Регистрация: 14.04.2014
Сообщений: 27,939
У тебя же есть дистрибутив.
Регистрация: 01.06.2016
Сообщений: 8

Есть. Но его размер всего лишь 4 Гб. А для установки требуется 43 Гб. Значит, очень-очень много будет скачано с интернета. Так?

125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
А кафе с Wi-Fi?
7595 / 6418 / 2924
Регистрация: 14.04.2014
Сообщений: 27,939

ЦитатаСообщение от Qweryty Посмотреть сообщение

Значит, очень-очень много будет скачано с интернета. Так?
Нет. Просто столько места для установки требуется.
Регистрация: 01.06.2016
Сообщений: 8
Я же не понесу свой компьютер в кафе
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788

Лучший ответ

Сообщение было отмечено Qweryty как решение

Решение

Qweryty, жесткий диск вставь в ноут, ноут можно носить с собой
2684 / 1942 / 968
Регистрация: 21.12.2010
Сообщений: 3,614
Записей в блоге: 9
я вообще все галки снял и студия скачивала только компиляторы, потратила 2.5 гига трафика

Эксперт .NET

6451 / 3980 / 1587
Регистрация: 09.05.2015
Сообщений: 9,335

Вам действительно нужны все эти компоненты которые вы там выбрали? Я очень в этом сомневаюсь. Типичная установка занимает 10-15 ГБ.

Регистрация: 01.06.2016
Сообщений: 8

Someone007, я еще не знаю точно, что мне нужно. Пока нужен C++, C#, Windows Store. Можно установить минимум, а потом вдруг еще что-то понадобится. И что тогда делать? Доустанавливать недостающие компоненты? Лучше уж сразу всё установить. Лишь бы интернет не отключили

igorrr37, ясно. Но мне это не подходит. Я уже устанавливал самый минимум и с отключенным интернетом. Запустил Студию и не смог написать консольную программу на C++, там не было этих шаблонов. С# вроде был, Windows Store не было. Вот такие неудобства.

Регистрация: 06.06.2016
Сообщений: 47
Вес дистрибутива с полным набором компонентов около 15 гб. При распаковке 43 как и пишет.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Что нужно для написания приложения для Facebook (библиотека для Visual Studio)
Здравствуйте! Нашел интересную статейку на офсайте посвящённому asp.net , где представлен.

Установка C++ Redistributable Visual Studio 2017 и Visual C++ для Visual Studio 2015
Доброго дня. Пытаюсь изучить PHP. Решил установить сервер локальный. В инструкции сказано: "Ещё.

Программа для подсчета интернет трафика в интернет клубе
помогите в создании программы для подсчета трафика с взаимодействием с БД. С вазможностью.

Зачем для создания формы на Angular использовать Visual Studio и Visual Studio Code?
Мне нужно написать форму на ангуляре, которая будет выполнять Select, Insert,Delete из базы данных.

Почему я перешёл на Lite после 3-х лет пользования Visual Studio Code

При работе с определенным фреймворком или платформой мы неизбежно задействуем интегрированную среду разработки (IDE). Например, с помощью Android Studio создаются приложения для платформы Android. С другой стороны, при работе с разнообразными проектами программисты используют редакторы кода, так как у них есть много полезных функций: подсветка синтаксических, программных и стилистических ошибок, автодополнение.

Примерно 13 лет назад я, как и многие заядлые программисты, начал пользоваться редактором Microsoft Notepad. Затем я открыл для себя Notepad++ и перешел на него. Потом установил Dreamweaver и пытался остаться на нем, даже когда выполнял много проектов по веб-разработке. Старые версии Dreamweaver работали довольно быстро на моем Pentium-IV, однако поздние начали сильно нагружать компьютер. Также мне посчастливилось работать на IDE компании JetBrains 2015 года и последующих, так как я смог получить лицензию от JetBrains с помощью университетского e-mail-адреса. С тех пор я использовал IDE JetBrains, игнорируя другие редакторы кода.

В 2017 году я, как и другие программисты того времени, установил Visual Studio Code. На то время он был очень удобным, а проблем с производительностью не возникало. В период пандемии я перешел на более низкопроизводительный ноутбук с 4 гигабайтами оперативной памяти. Для VSCode требуется минимум 8 гигабайтов при одновременном использованием с веб-браузером. Я заметил, что VSCode начал часто тормозить и порой компьютер полностью зависал.

Почему VSCode такой медленный?

VSCode — гибридное приложение. Это значит, что весь графический интерфейс пользователя (GUI) запускается в браузере, архитектура которого содержит довольно сложные компоненты, такие как JavaScript-движок, графический движок и модули сетевого управления. Поэтому гибридные приложения обычно сильно нагружают память, даже если у них простая внутренняя логика. Кроме того, VSCode далек от минимализма, в нем установлено много крутых UI-элементов и функций.

Lite

Lite — это новый легкий редактор кода, созданный на языке Lua, который не является гибридным приложением. В нем используется графические библиотеки С и SDL для визуализации GUI-элементов. В результате громоздкие коды JavaScript и HTML, которые создают псевдонативные GUI-элементы внутри экземпляра браузера, полностью отсутствуют. Всё загружается невероятно быстро и без малейших лагов.

Архитектура кода и система плагинов очень удобны и минималистичны. Основной редактор выглядит как обычное текстовое окно, а все остальные возможности представлены в качестве плагинов, написанных на языке Lua. Lite отражает принципы дизайна дизайна Go. В отличии от других языков программирования, синтаксис Go не расширяется — в него добавляются лишь дополнительные пакеты. То же самое происходит в редакторе Lite — в основном проекте отсутствуют все компоненты. С помощью плагинов программист может расширить основной редактор, добавляя то, что ему нужно.

Установка редактора Lite на Linux

Проект Lite часто изменяется, поэтому я создавал его из исходного кода. Это так же просто, как устанавливать готовые релизы. Загрузите этот репозиторий на компьютер.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *