Подтвердить что ты не робот

Ускорение компиляции и модульного тестирования в Visual Studio 2010/Resharper/ASP.NET MVC

Я работаю над средним решением ASP.NET MVC с Visual Studio 2010 и Resharper. Проект стремительно развивался, когда я начал разрабатывать его 1 1/2 года назад, но со временем он стал медленнее - не только компиляция, но и время, необходимое ASP.NET для повторной инициализации веб-сайта. Поскольку я часто практикую TDD и рефакторинг, мне часто приходится перекомпилировать повторный запуск моих тестов, поэтому я ищу способы смягчить это, если это возможно.

Подробнее о проблеме

Мне требуется около 20-25 секунд, чтобы перекомпилировать проект, чтобы просмотреть результат в веб-браузере.

Запуск одиночного unit test (только одного теста, а не всего пакета) с тестовым бегуном Resharper также очень медленный (около 15-20 секунд). По какой-то странной причине кажется, что Resharper занимает большую часть времени, инициализируя тестовый прогон, и тратит только очень небольшую долю, фактически выполняющую тест.

Что я уже сделал:

  • Заменен мой жесткий диск SSD (огромное влияние)
  • Перемещенная компиляция ASP.NET и каталог каталога Windows Temp на SSD-подобный (аппаратный) привод RAM (большое влияние, но это было до SSD).
  • Отключить автоматическую компиляцию одного проекта, который я редко изменяю (небольшое влияние, поскольку этот проект в любом случае мал).
  • Изменили ненужные ссылки на .NET и сторонние библиотеки (очень небольшое влияние, если они есть)
  • Некоторые черные магические трюки обсуждаются в этом сообщении в блоге. (очень небольшое воздействие, если таковое имеется).

Но я все еще придерживаюсь (медленных?) цифр выше, и я чувствую, что это вредит моей производительности. Теперь мне интересно, что делать дальше.

Моя текущая настройка системы:

  • Core 2 Quad Q6600 CPU
  • 4 ГБ DDR2 800 RAM
  • 120 ГБ SSD
  • Windows 7 x64
  • Visual Studio 2010 Ultimate с Resharper 5.5

Технические характеристики моего решения:

  • 22.000 строк .NET 4 С# Code
  • 3 проекта: один ASP.NET MVC, один тестовый проект, одна крошечная библиотека общего назначения включена двумя другими и которые я не компилирую, если что-то не изменилось.
  • 35 ссылок на другие библиотеки (среда .NET и материалы с открытым исходным кодом)
  • ~ 200 просмотров
  • 850 единиц измерения

Теперь мои вопросы:

  • Возможно, обновление моей памяти до 8 ГБ может привести к значительному повышению производительности?
  • Являются ли эти цифры нормальными? Или, возможно, это может быть проблемой с моим решением?
  • Что бы вы попробовали дальше (помимо покупки совершенно нового компьютера)?

Спасибо,

Адриан

Изменить:. Особенно странно, что, когда я нажимаю кнопку "build solution", Visual Studio тратит около 8 секунд, показывая мне символ ожидания, пока он фактически не начнет компиляцию, и окно компиляции обновлено. В течение этого периода IDE не реагирует. Это хорошая часть фактического времени компиляции. Интересно, что Visual Studio делает за этот период?

4b9b3361

Ответ 1

Для решения такого размера действительно кажется, что ваше оборудование в порядке и должно быть достаточно быстрым для сборки-теста. Я обнаружил, что большинство проблем с производительностью (в моем случае в любом случае) связаны с зависимостями проектов, а не с фактическим временем компиляции. Я пару идей, которые помогут вам выяснить проблему:

  • попробуйте "увеличить объем вывода сборки проекта MSBuild" в "Диагностика" ( "Опции- > Проекты и решения- > " Сборка и запуск "), также установите расширения VSCommands (в ​​нем содержится расширение статистики сборки, которое показывает время на каждом шаге) и проверьте, какая часть, которая говорит больше всего времени.

  • Являются ли зависимости от других проектов (35, на которые вы ссылаетесь) в GAC, или они рассеиваются через ваш HD? Они автоматически обновляют ссылки (у них есть файл .refresh под ними). Maay попытается упростить разрешение этих зависимостей, то есть скопировать локальные все библиотеки DLL в каталог bin и посмотреть, помогает ли она

Ответ 2

Вы можете попробовать секретную функцию Resharper.Internal "Параллельное здание с MSBuild", как описано здесь.

Ответ 3

Так как это проект MVC, убедитесь, что проект "Build Views" отключен.

  • Щелкните правой кнопкой мыши файл проекта → "Выгрузить проект" в проекте MVC.
  • Щелкните правой кнопкой мыши Файл проекта → Изменить проект
  • Проверить настройки... ложь
  • Сохранить и щелкните правой кнопкой мыши → перезагрузить проект.

Я оставляю его так, чтобы компилятор обнаружил мои ошибки до того, как мои клиенты сделают это. Но Build Views выглядит ужасно медленным.

Ответ 4

У меня была аналогичная проблема. Поскольку я нажал кнопку 'Run tests', потребовалось около минуты, чтобы выполнить тест.

Моя проблема заключалась в том, что у меня были настройки теста, указывающие на 'Trace and Impact' вместо 'Local'.

Чтобы выбрать тестовые настройки, перейдите в меню 'Test', а затем 'Select Active Test Settings > Local'.

Это сработало для меня.

Ответ 5

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

  • Построить
  • Испытания
  • Развертывание

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

Ответ 6

Аналогичная проблема здесь, я оставил "охват кода" включен.