#visual-studio-2008 #msbuild #build
#visual-studio-2008 #msbuild #сборка
Вопрос:
Наше решение состоит примерно из 20 файлов .vcproj. За исключением основной программы, большинство из них являются независимыми библиотеками, которые зависят только от своих собственных модульных тестов.
Когда мы создаем это решение в VS.NET мы замечаем, что VS запускает несколько процессов VCBuildHelper и эффективно использует все доступные ядра. Однако, когда мы запускаем наши ежедневные сценарии сборки, реализованные с помощью MSBuild, мы замечаем, что используется только одно ядро.
Мы добавили /maxcpucount и /p:BuildInParallel=true, но это все равно не сработало.
Приветствуется любая помощь.
Заранее спасибо!
Ответ №1:
Параллельные сборки на удивление нетривиальны, поскольку MSVS использует интересное решение «порядок проектов», позволяющее запускать некоторые вещи параллельно, а другие — нет. Однако из того, что вы описываете, кажется, что вы должны были видеть больше параллелизма.
Вот сообщение от команды MSBuild, в котором говорится о настройке параллелизма:
http://blogs.msdn.com/b/msbuild/archive/2010/03/08/tuning-c-build-parallelism-in-vs2010.aspx
Вот инструмент YieldDuringToolExecution для улучшения параллелизма (MSBuild 4):
Немного более устаревший, вот хак блоггера по улучшению параллелизма внутри IDE:
http://www.hanselman.com/blog/HackParallelMSBuildsFromWithinTheVisualStudioIDE.aspx
Какую версию MSVS вы используете?
Надеюсь, это поможет…
Комментарии:
1. Спасибо за ваш ответ! Здесь мы используем MSVS 2008. Сейчас я экспериментирую с вашими справочными статьями. Я опубликую окончательное решение для моей ситуации, если какое-либо из них сработает.
2. Мы все еще MSVS 2008 и здесь. Мы установили MSVS2010, но у него есть проблемы с производительностью и другие проблемы, и мы пока не можем перейти к нему. (Я бы предположил, что вы могли бы получить такой же хороший параллелизм в MSVS2008 по сравнению с MSVS2010.) — Спасибо, мне было бы интересно ваше «окончательное» решение для вашей ситуации, если вы его найдете.
Ответ №2:
Мы экспериментировали различными способами, но безуспешно. Теперь мы вернулись к нашему старому другу: devenv xxx.sln / build configuration, и это дало нам тот же параллелизм, что и в IDE.
Я полагаю, что где-то должны быть спрятаны недостающие части. У меня просто нет времени разбираться : (