在Visual Studio 2010中构建包含许多项目的大型解决方案时,Windows 7资源监视器通常会将devenv.exe显示为无响应,但是平均CPU会读取低于0.91的数字,如下所示:
这是在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?
答案 0 :(得分:5)
构建项目可能涉及大量磁盘I / O.这可能需要相当长的时间,但不会产生很多CPU负载。
至于为什么它显示为没有响应,我的猜测是构建过程是出于某种原因(例如,有人做得不好),阻止应用程序响应来自操作系统的请求。应用程序不需要达到100%的CPU利用率才能被视为“无响应”,它只需要将其主线程卡在某处,以防止它及时响应操作系统。
答案 1 :(得分:2)
似乎MSBuild并不喜欢并行构建多个项目,而是并行一个项目中只有多个文件。
答案 2 :(得分:0)
为什么它变慢并且不能按预期工作?好吧,因为它采用尖端技术从头开始构建。这就是为什么!
( Rant :VS 2010对IMHO来说是一个巨大的退步.VS 2008更加稳定/响应(并且有效)但是让个人意见放在一边)
采用多核处理的两种解决方法:
将BuildInParallel
任务的MSBuild
属性设置为true
<Target Name="RunInParallel">
<MSBuild BuildInParallel="true"
Projects="@(Projects)"
Targets="RunCodeAnalysis">
</MSBuild>
</Target>