为什么Visual Studio 2010(msbuild?)构建速度更快?

时间:2011-07-16 03:15:56

标签: visual-studio-2010 msbuild

在Visual Studio 2010中构建包含许多项目的大型解决方案时,Windows 7资源监视器通常会将devenv.exe显示为无响应,但是平均CPU会读取低于0.91的数字,如下所示:

Visual Studio 2010 slow build on AMD Phenom II x4

这是在Windows 7 x64上使用AMD Phenom II 920 4核CPU,8 GB RAM。 Visual Studio没有响应,但似乎没有使用任何CPU资源。

当我尝试使用msbuild.exe和开关“/maxcpucount:4”运行构建时,平均CPU值仍然保持低水平,并且RHS图表从不显示高于5-10%的值。

为什么Visual Studio 2010(或msbuild)似乎没有在构建期间利用CPU?

3 个答案:

答案 0 :(得分:5)

构建项目可能涉及大量磁盘I / O.这可能需要相当长的时间,但不会产生很多CPU负载。

至于为什么它显示为没有响应,我的猜测是构建过程是出于某种原因(例如,有人做得不好),阻止应用程序响应来自操作系统的请求。应用程序不需要达到100%的CPU利用率才能被视为“无响应”,它只需要将其主线程卡在某处,以防止它及时响应操作系统。

答案 1 :(得分:2)

似乎MSBuild并不喜欢并行构建多个项目,而是并行一个项目中只有多个文件。

答案 2 :(得分:0)

为什么它变慢并且不能按预期工作?好吧,因为它采用尖端技术从头开始构建。这就是为什么!

Rant :VS 2010对IMHO来说是一个巨大的退步.VS 2008更加稳定/响应(并且有效)但是让个人意见放在一边)

采用多核处理的两种解决方法:

  • 将MSBuild设置为概述为here的外部工具并为其指定一个 快捷方式(如Ctrl + Shft + B)可快速访问。
  • BuildInParallel任务的MSBuild属性设置为true

    <Target Name="RunInParallel">
      <MSBuild BuildInParallel="true"
               Projects="@(Projects)"
               Targets="RunCodeAnalysis">
      </MSBuild>
    </Target>