3 Stimmen

Warum MSBuild nur einen Kern verwendet, während VS.NET alle Kerne verwendet, die auf dem gleichen .sln verfügbar sind?

Unsere Lösung besteht aus etwa 20 .vcproj-Dateien. Außer dem Hauptprogramm sind die meisten davon unabhängige Bibliotheken, die nur von ihren eigenen Unit-Tests abhängig sind.

Wenn wir diese Lösung in VS.NET erstellen, stellen wir fest, dass VS mehrere VCBuildHelper-Prozesse startet und alle verfügbaren Kerne effizient ausnutzt. Wenn wir jedoch unsere mit MSBuild implementierten täglichen Build-Skripte ausführen, stellen wir fest, dass nur ein Kern verwendet wird.

Wir hatten /maxcpucount und /p:BuildInParallel=true hinzugefügt, aber es funktionierte immer noch nicht.

Für jede Hilfe sind wir dankbar.

Vielen Dank im Voraus!

3voto

charley Punkte 5823

Parallele Builds sind überraschenderweise nicht trivial, da MSVS eine interessante "order-of-projects"-Entscheidung trifft, einige Dinge parallel laufen zu lassen und andere nicht. Nach dem, was Sie beschreiben, scheint es jedoch, dass Sie mehr Parallelität hätten sehen sollen.

Hier ist ein Beitrag des MSBuild-Teams, in dem es um die Optimierung der Parallelität geht:

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

Hier ist ein YieldDuringToolExecution-Tool, um eine bessere Parallelität zu erreichen (MSBuild 4):

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

Hier ist ein etwas älterer Blogger-Hack, wie man die Parallelität innerhalb der IDE verbessern kann:

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

Welche MSVS-Version verwenden Sie?

Ich hoffe, das hilft...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X