Почему MSBuild использует только одно ядро, а VS.NET использует все ядра, доступные на одном и том же .sln? - PullRequest
3 голосов
/ 06 мая 2011

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

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

Мы добавили / maxcpucount и / p: BuildInParallel = true, но все равно не сработало.

Любая помощь приветствуется.

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 06 мая 2011

Параллельные сборки на удивление нетривиальны, так как MSVS делает интересное решение "порядка проектов", чтобы некоторые вещи выполнялись параллельно, а другие - нет.Однако из того, что вы описываете, кажется, что вы должны были видеть больше параллелизма.

Вот сообщение от команды MSBuild, говорящее о настройке параллелизма:

http://blogs.msdn.com/b/msbuild/archive/2010/03/08/tuning-c-build-parallelism-in-vs2010.aspx

Вот инструмент YieldDuringToolExecution для улучшения параллелизма (MSBuild 4):

http://blogs.msdn.com/b/msbuild/archive/2010/06/03/better-parallelism-in-msbuild-4-with-yieldduringtoolexecution.aspx

Немного устаревший, вот взлом блоггера по улучшению параллелизма внутри IDE:

http://www.hanselman.com/blog/HackParallelMSBuildsFromWithinTheVisualStudioIDE.aspx

Какую версию MSVS вы используете?

Надеюсь, это поможет ...

0 голосов
/ 11 мая 2011

Мы экспериментировали разными способами и не повезло. Теперь мы вернулись к нашему старому другу: devenv xxx.sln / build configuration , и это дало нам тот же параллелизм, что и в IDE.

Я полагаю, что где-то спрятаны недостающие кусочки. У меня просто нет времени разобраться: (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...