it-swarm.com.ru

Почему так долго загружается мое решение в Visual Studio?

У нас действительно большое решение с более чем 200 проектами и тысячами файлов. Несмотря на это, решение использовалось довольно быстро для загрузки в Visual Studio 2010, а также в 2012 году. Однако после копирования всего хранилища SVN в другое место загрузка и закрытие решения неожиданно заняло слишком много времени. (Я говорю о 30-60 минутах здесь!)

37
gehho

Я сам нашел решение и хотел поделиться им здесь, надеясь, что оно может сэкономить кому-то немало часов на исследования, и уставиться на диалог «Подготовка решения ...».

При проверке процесса devenv.exe с помощью Process Monitor я обнаружил, что он довольно занят доступом к каталогу .svn. Вот что я сделал (и это как-то решило проблему):

  1. Убить Visual Studio
  2. Откройте Visual Studio без загрузки решения
  3. Отключите AnkhSvn как плагин управления источником (Инструменты-> Параметры-> Контроль источника-> Выбор плагина-> Нет)
  4. Отключите «Document Well 2010 Plus» (VS2010) или «Custom Document Well» (VS2012) в разделе «Инструменты для повышения производительности» («Инструменты» -> «Параметры» -> «Инструменты для повышения производительности») - я где-то читал, и это также могло бы помочь.
  5. Закрыть Visual Studio
  6. Удалите файл *.suo решения. Он находится в той же папке, что и само решение. ПРИМЕЧАНИЕ: Вы потеряете несколько настроек для вашего решения, таких как открытые в данный момент файлы, точки останова, закладки, текущая конфигурация решения и платформа (например, Debug x86) и т.д.
  7. Перезапустите Visual Studio
  8. Загрузите решение - теперь это было намного быстрее!
  9. Закрыть Visual Studio
  10. Откройте Visual Studio без загрузки решения
  11. Повторно включите AnkhSvn и «Document Well»
  12. Перезапустите Visual Studio
  13. Откройте решение - оно было загружено за считанные секунды!

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

65
gehho

Ничто из этого не помогло мне, чем я занимался ... Я смотрю с ProcMon sysinternals, фильтруя по devenv, и я видел много записей в fussionlog. Несколько недель назад я включил fussionlog для целей отладки и не думал отключать его. Мне просто пришлось отключить fussionlog, и решение открылось быстрее.

5
xisket

Вы можете открыть Visual Studio в безопасном режиме, а затем проверить настройки подключаемого модуля и исходного кода после открытия проекта .... Безопасный режим означает «Запускает Visual Studio, загружая только среду и службы по умолчанию».

Как :

devenv /SafeMode 

Или по твоему пути

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe" /SafeMode

источник: https://msdn.Microsoft.com/en-us/library/ms241278.aspx

3
Tarek El-Mallah

В моем случае следующее работало без каких-либо предложенных промежуточных шагов:

  1. Убей Visual Studio.
  2. Запустите Visual Studio напрямую (т. Е., не из файла .sln ).
  3. Затем из Visual Studio откройте решение.

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

1
Reg Edit

между прочим, я понимаю, что это поздняя запись, но я обнаружил, что простое удаление (удаление) моего большого количества точек останова решило чрезмерное время загрузки и время компиляции. Это действие уменьшило размер файла .suo с 214 МБ до 977 КБ. Пусть VS обрабатывает сам файл .suo. Компиляция и загрузка теперь занимают <1 минуту вместо 5-10 минут для решения с 35 проектами. Visual Studio 2012 Pro, обновление 4.

1
jafo

Я попробовал выше, но это не решило мою проблему.

Вот как я справился с этой проблемой, надеюсь, она подойдет и некоторым из вас:

  1. Откройте Visual Studio 2013 без решения. 
  2. Создайте новое консольное приложение C # и сохраните его. 
  3. Закройте Visual Studio.
  4. Снова откройте консольное решение, созданное на шаге 2.
  5. Закройте Visual Studio.
  6. Снова откройте решение, которое ранее висело в диалоговом окне «Подготовка решения». Шахта открылась сразу, больше не висела.
0
Yves Rochon

Ни один из других ответов не работал для меня. Время компиляции CI прошло хорошо, но загрузка моего решения в Visual Studio заняла почти две минуты. VS будет работать нормально, пока я не закрою и не открою решение в следующий раз. Разные версии VS показали одинаковую проблему, и безопасный режим, и удаление suo не помогли.

Я закончил тем, что следовал совету в http://geekswithblogs.net/akraus1/archive/2014/04/30/156156.aspx , чтобы использовать Windows Performance Recorder для инструмента VS и найти проблему. Заглянув в анализатор производительности Windows в разделе «Загрузка ЦП (Sampled)» и добавив столбец «Stack (Frame Tags)», я смог изучить использование devenv.exe.

Оказалось, что по горячему пути по счету было Microsoft.VisualStudio.Platform.WindowManagement.ni.dll 23 вызовов вниз, и ниже этого в конечном итоге Microsoft.VisualStudio.ServerExplorer.dll и Microsoft.VisualStudio.Data.Package.dll. Это указывало на то, что я заглянул в Server Explorer в пользовательском интерфейсе и открыл вкладку Data Connections. Там я нашел сотни ошибочно добавленных соединений из раздела ConnectionString отладочного web.config. Удаление из web.config уменьшило загрузку этого отдельного проекта с 90+ секунд до почти мгновенного.

0
Jeremy Murray

Используя Visual Studio 2015, я в итоге создал новое решение, добавив существующие проекты. 

Удаление * .suo из ответа gehho помогло в прошлом, но не помогло мне в этом случае. Еще один файл .suo находится в скрытой папке .vs в корне решения.

Есть и другие ответы здесь для Visual Studio 2015 Visual Studio 2015 чрезвычайно медленный

0
goodeye