views:

689

answers:

3

I have a big solution with more than 40 projects. Almost half of them are test projects. In my project we use both Code Contracts, Code Analysis, Style Analysis. I want to be able to build the projects that are not dependent in parallel on my quad core CPU.

How can I setup msbuild to build the projects in parallel?

A: 

I know that there is a clone of nmake that supports the -j switch to compile in parallel:

http://qt.gitorious.org/qt-labs/jom

and there is also a hack for MSbuild, just google it. I also know there is a tool that supports building on multiple machines and perhaps also on multiple cores, but I dont remember its name at the moment.

hope this helps.

kashif
+4  A: 

You could launch the build in MSBuild in parallel by :

  • Setting the attribute BuildInParallel of MSBuild task to true

    <Target Name="RunInParallel">
      <MSBuild BuildInParallel="true"
               Projects="@(Projects)"
               Targets="RunCodeAnalysis">
      </MSBuild>
    </Target>
    
  • Or calling msbuild with the parameter /maxcpucount:X where X specifies the number of worker processes that are involved in the build. This solution better suits your need.

    msbuild [YourSolutionFile.sln] /maxcpucount:4 /p:Platform=AnyCpu;Configuration=Debug;
    

Scott Hanselman wrote a post on that, if you want to integrate (kinda) the process into Visual studio as an external tool.


For C++ projects you could configure multiprocessor build directly in Visual Studio :

Tools | Options | Projects and Solutions | Build and Run

madgnome
Thanks, We are not into C++, but if other readers are then you should take a look at this tool: http://www.xoreax.com/visual_studio.htm
thomas nn
+2  A: 

In Visual Studio: Tools | Options | Projects and Solutions | Build and Run. This should default to your CPU count.

From the command line: msbuild /maxcpucount[:n] (is n is not specified, then it will use the CPU count).

Richard
We also found that in Visual Studio: Tools -> Options -> Projects and Solutions -> Build and Run -> .You can set both MSBuild project build output verbosity and log file verbosity: to Quiet. This will make the build process MUCH faster and the IDE responsive during build. (It seams that VS2010 locking of IDE related to output is the main factor in the slow build process) <-- MS: Please Fix!!
thomas nn