使用MSBUILD和maxcpucount选项的问题

use*_*906 1 msbuild visual-studio-2008 parallel-builds

我在4核机器上使用MsBuild.我给下面的命令行来构建4个项目属于大VC++所得溶液(超过4个项目全部没有相互依赖).我正在使用Visual Studio 2008.

为了加快构建时间,我试图利用这些maxcpucount选项,但似乎无法正常工作.我期待每个核心将构建我在命令行提供的4个项目中的每个项目.不幸的是,我测量了建造的时间,有或没有maxcpucount选项,我有相同的确切结果.

C:\WINDOWS\Microsoft.NET\Framework\v3.5\msbuild.exe MyVCppSolution.sln 
     /t:ProjA;ProjB;ProjC;ProjD /m

你知道我在做错了什么吗?

就是"建立4个项目的MyVCppSolution.sln解一次"或者我应该手动运行4个进程的每个构建解决方案的单个项目多达4个正确的方式?

Tay*_*ird 6

MSBuild可以并行项目.您的命令行调用(使用/ t)要求并行构建目标,这不完全是设计.您还必须在核心.proj文件中为并行设置一个标志

要获得你想要的东西(使用所有可用内核并行4个项目),你需要有一个"整体"proj文件来调用msbuild并将BuildInParallel参数设置为true.然后那个电话,调用你的其他项目.msbuild.exe和BuillInParallel上的/ m组合将为您提供所需的内容.

所以想:(如果你想要并行构建ProjA,B,C,D)

文件buildall.proj

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion=”3.5”>
     <Target Name="default">
          <MSBuild Projects="proja.proj, projb.proj, probc.proj,prod.proj" BuildInParallel="true"/>
     </Target>
</Project>
Run Code Online (Sandbox Code Playgroud)

然后你打电话给buildall

msbuild.exe buildall.proj /m:4
Run Code Online (Sandbox Code Playgroud)

  • 我只想注意,根据MSDN文档[link](http://msdn.microsoft.com/en-us/library/microsoft.build.tasks.msbuild.buildinparallel.aspx),BuildInParallel默认为true ,所以你不需要明确地添加它. (3认同)