Сотни экземпляров MSBuild и ConHost нерест и заполнение памяти при попытке запустить веб-приложение в Visual Studio 2015
Чтобы дать некоторую предысторию, я тоже имел эту проблему на VS2012. Случайно (не все время), когда я отправился запускать веб-проект моих компаний в IE через vs2012, он некоторое время сработает и в конечном итоге не загрузится. Я заметил, что моя машина по существу будет пытаться что-либо сделать, и придет почти к остановке.
Проверка диспетчера задач выявит СОБЫТИЯ, если не ТЫСЯЧИ MSBuild.exe и экземпляр Conhost.exe, порожденный, заполняя все возможные байты памяти, которые они могут (максимум 8 гигабайт на машине). У меня было только несколько решений, которые нужно было построить.
Я никогда не обнаружил реальной причины, но возможное обновление для VS2012. Я считаю, что это проблема в течение нескольких месяцев.
Ускоренная перемотка вперед до сегодняшнего дня, теперь я на машине с 16 гигабайтами, и теперь я запускаю VS2015 14.0.23107.
Недавно я заметил, что вопрос о бесконечно появляющемся MSBuild и Conhost вернулся, на этот раз заполнив все мои 16 гигабайт памяти.
Я искал в Интернете столько, сколько могу, но я не нашел темы, похожие на то, что я испытываю.
Я знаю, что это "функция" от Microsoft, как указано здесь:
msbuild.exe остается открытым, блокирует файлы
и других местах.
Но никто, кого я видел, не имеет проблем, когда столько MSBuild и Conhosts появляются, что каждый бит памяти потребляется ими, и вы вынуждены перезапускать машину или ждать, пока все они не умрут (что не кажется произойдет через какое-то определенное установленное время).
Единственные переменные окружения, о которых я могу вспомнить, когда это произошло недавно:
- У меня было как минимум 2 экземпляра VS2015, выполняющих
- Я только что сделал изменения и построил одно решение.
- Я пошел запускать наше веб-приложение на решение, которое зависит от предыдущего, который я только что создал.
У кого-нибудь еще есть эта проблема, и вы когда-нибудь находили причину?
-Edit -
Обновление: я не 100%, если это исправлено, но я не получил его с тех пор, как внес изменения.
По существу, у нас есть два разных решения здесь. Они очень похожи, только разница в том, что один из них имеет меньше других проектов/зависимостей с ним.
Я часто переключаюсь между этими двумя решениями, и я считаю, что в конфигурации решения для одного из них была включена опция "Отладка с расширенной диагностикой" для хотя бы одного проекта.
Кроме того, у меня были варианты сборки, которые устанавливали одновременно до 8 параллельных сборников.
Наш менеджер devops считает возможным, что некоторая переключение между решениями, смешанными с параллельными сборками, вызвало какой-то коррупционный/ошибка, породивший тысячи MSBuild.
Мы с тех пор исправили проблему с "Debug with Extended Diagnostics", и я изменил параметры сборки, чтобы быть только 1 параллельной сборкой и не имел проблемы с тех пор.
Ответы
Ответ 1
Интересно, что у меня была проблема, когда поток процессов MSBuild и conhost начал возникать и убивал всю мою память. В моем случае это было связано с моим тестированием с функциями часовых поясов. Я изменил часовой пояс ОС для тестирования /QA веб-приложения, и по какой-то причине это было результатом. Что-то с Visual Studio не нравится изменения времени в режиме "на лету".