it-swarm.com.ru

Visual Studio постоянно зависает во время сборки

Вероятно, между 25 и 50% случаев, когда я строю свое решение, я вижу это:

" Запрошенная вами операция выполняется дольше, чем ожидалось. Этот диалог закроется после завершения действия. "

Я ненавижу это окно способами, которые я не могу описать. Он никогда не разрешается, кнопка Отмена никогда не активируется, и единственный способ исправить это - убить процесс devenv и снова загрузить все мое решение, прекрасно зная, что я ничего не исправил, и я в равной степени обязан увидеть То же самое, когда я пытаюсь построить.

Мое решение - всего около 60 проектов, в основном это библиотеки классов C #, по несколько веб-приложений, веб-служб и консольных приложений. Однако проблема сохраняется даже при создании одного фрагмента кодовой базы с большинством (50) выгруженных проектов.

Моя проблема в том, что выходные окна ничего не говорят мне в тот момент, когда они зависают, и я не знаю, как еще определить причину этой блокировки. Если бы я догадался, я бы предположил, что это тупик в файловой системе или что-то в этом роде, но я не знаю, как это доказать - тем более, как предотвратить это.

Что я могу сделать, чтобы диагностировать и устранить это из моего решения, чтобы я больше никогда его не видел? В общем, как я могу диагностировать проблемы, возникающие во время сборки?

47
bwerks

Если бы схожая проблема, VS зависал в течение примерно 45 секунд, затем собирался в течение 4 секунд и завершал работу. 45 секунд зависания не приведут к выводу GUI, а VS зависнет.

Используя ProcMon, я мог видеть более 3 миллионов операций с файлами в папке/packages/через devenv.exe, когда я собирался построить этот проект (и продолжу некоторое время после этого) !! Первые шаги сборки показывают, что он проверял КАЖДЫЙ ПАКЕТ на предмет необходимости восстановления пакета (это не так).

Поскольку я склонен винить во всем NuGet, я отключил восстановление пакета Nuget «разрешить NuGet загружать отсутствующие пакеты» в поле Visual Studio -> Параметры -> Диспетчер пакетов Nuget -> Общие. К моему удовольствию, сборка была очень быстрой. Всего 5 секунд! 

Оказывается, у нас было включено восстановление пакетов при сборке (я думаю, что это включено по умолчанию сейчас в VS) И мы также проверили пакеты в системе контроля версий. Похоже, что это приводит к некоторому перебору TFS ... проверка на восстановление пакета должна инициировать TFS для выполнения некоторых проверок работы системы контроля версий.

К вашему сведению, это было VS2013 ОБНОВЛЕНИЕ 4 - Nuget версия: 2.8.50926.663 .. на sln с NumberOfProjects = 38, но я мог бы воссоздать это зависание, просто создав один csproj с 2 зависимостями.

Обновление: 

Локальный хост «Rebuild All» на Sln с SccNumberOfProjects = 53 занимал 7:05 с 2 минутами визуальной студии, замороженной/не отвечающей

  • до 4:14 на 2-ядерном i5 без заморозки
  • до 2:44 на 4-ядерном i7

Кроме того: это было на машине с различными инструментами безопасности наблюдателя файлов, вероятно, не увеличивающими скорость всего этого процесса ... и, возможно, виноватыми.

49
felickz

Я видел это в больших проектах, когда MSBuild работает с включенным диагностическим переключателем. В Visual Studio перейдите в Инструменты/Параметры/Проекты и решения/Построить и запустить, а затем проверьте значение детализации выходных данных сборки проекта MSBuild. Если он не установлен как минимальный, попробуйте установить минимальный и посмотреть, смогут ли ваши сборки завершиться.

13
Pat P

Похоже, что запуск Visual Studio в качестве администратора решил проблему для меня! (Для того, чтобы всегда запускать программу от имени администратора см. Как запустить Visual Studio от имени администратора по умолчанию )

6
IngoB

Я обнаружил, что Visual Studio сильно зависает при создании больших проектов. Оказывается, это был ReSharper. После того, как я выключил его: Инструменты -> Параметры -> ReSharper -> Приостановить сейчас, все прекрасно работало без проблем (даже на очень больших решениях, более 100 проектов)

4
the_doc

Было высказано предположение о том, что Microsoft Connect что проект зависел от зависаний. Я удалил проект моделирования из нашего решения и с тех пор не зависал (около недели).

3
st-dev

В моем случае установка «максимальное количество параллельных сборок проекта» на 1 вроде помогла (т.е. сборка проекта из чистого состояния вызывает 1-минутное замораживание с последующей нормальной сборкой, и каждая последующая сборка работает нормально). 

Вышеупомянутая настройка может быть установлена ​​в Tool -> Options -> Projects and Solutions -> Build and Run.

3
Tomasz Maczyński

Просто попробуйте команду ниже в режиме администратора. Перед запуском этой команды обязательно закройте все экземпляры VS. 

devenv /resetuserdata

Примечание: devenv находится в C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE.

2
Jayesh Vaghasiya

Для меня это было связано с автоматической установкой пакета npm. Я пошел в Инструменты> Параметры> Проект и решения> Внешние веб-инструменты и снял флажки со всех внешних инструментов и перезапустил VS. После этого я смог построить его снова. Я знаю, что мне нужно проверить их, но мне нужно выяснить, что их вызывает и что не так с этим файлом решения.

1
PersyJack

Visual Studio 2017

Удаление Anaconda3 из установки исправило его. В procmon я видел сотни тысяч звонков в поисках файлов в папке Anaconda3 из сотен экземпляров powershell, порожденных msbuild.

1
The Sharp Ninja

В дополнение к ответу Феликса который решает (или почти решает) эту проблему для сборок:

Кроме проблемы во время сборки, у меня также была проблема с Консолью управления пакетами. Ожидание заняло около минуты. Используя procmon, я обнаружил, что папка репозитория NuGet анализировалась при каждом открытии этого окна (очень умно, Microsoft!). В этой папке было около 1000 пакетов. После удаления всего из вышеуказанной папки проблема с производительностью исчезла. 

Обратите внимание, что мой ответ относится к VS 2015 (и может быть ниже). Я не проверял, но подозреваю, что в VS 2017 все должно быть в порядке.

1
Kamarey

Для меня проблема заключалась в расширении, которое автоматически запускает шаблоны T4 при сборке (AutoT4). Отключение при работе с решениями с EF решило проблему.

1
David Cholt

Я переместил свою платформу разработки VS 2008 с Windows 7 на Windows 10 и столкнулся с ситуацией, когда Visual Studio зависала каждый раз, когда я пытался создать большой проект. Мне пришлось построить проект, затем с помощью диспетчера задач убить VS и перезапустить. Само собой разумеется, это сделало отладку действительно трудной! В любом случае, проблема заключалась в том, что при переходе на Win 10 VS больше не работал от имени администратора (и, возможно, Win 10 более конкретно относится к привилегиям). Изменение свойств, чтобы программа работала от имени администратора, решила проблему. (IngoB - у меня недостаточно статуса, чтобы комментировать ваше сообщение, но спасибо за указание на это!) 

0
Robert Cody