如果您的Build在Visual Studio中花费太长时间的最佳实践

时间:2009-01-10 16:25:55

标签: visual-studio language-agnostic

我在Visual Studio中拥有中等大小的解决方案,需要大约5分钟才能构建(由于FxCop和其他后期构建步骤需要很长时间)。 我的问题是,Visual Studio在构建时停止响应。你不能继续工作,因为VS几乎挂起。我尝试使用两个VS实例,只使用一个用于构建,但它时不时地崩溃。

我的问题是,如何不浪费时间看Visual Studio构建您的大/中等项目。对此有什么最佳做法吗?

6 个答案:

答案 0 :(得分:37)

答案 1 :(得分:7)

我刚刚学到的两个优秀的MSBuild技巧......

您可以使用/ m:n开关并行运行任务,其中n是要使用的处理器数。您所要做的就是在MSBuild任务上设置BuildInParallel

另一个技巧是如果你有几个< exec />通过调用< exec command =“sleep 10 | sleep 10 | sleep 20”/>来运行你的任务实际上也可以并行运行它们。通过使用每个命令之间的管道字符。一个更实际的例子:

<CreateItem Include="server1;server2;server3;server2">
  <Output ItemName="IISServer" TaskParameter="Include"/>
</CreateItem>
<CreateProperty Value="@(IISServer->'iisreset.exe /start %(Identity)', '|')">
  <Output TaskParameter="Value" PropertyName="IISServerStartAll" />
</CreateProperty>
<exec command="$(IISServerStartAll)" />

答案 2 :(得分:5)

  1. 你当然不需要经营一个 每次你的静态代码分析 建立你的解决方案
  2. 减少项目数量 合并一些也可以帮助很多。
  3. 您实施了哪些其他制作后任务?

答案 3 :(得分:1)

如果您有多台计算机或将此程序设置为其他工作的朋友,请使用Incredibuild。 它易于设置和使用。 加速是线性的编译。

它对多核cpu也有好处,因为通常vs一个核心用于一个项目,但是incredibuild使它与每个.cpp文件并行...

试试看..:)

答案 4 :(得分:0)

您可以考虑使用MSBuild的专用构建计算机。从那里,你可以在编译时继续工作。但是,当你引入网络问题时,它确实会使它变得更加复杂。

答案 5 :(得分:-1)

您可以通过存根编译代码所需的类来在另一个项目中创建类。这样,您就可以测试和记录新代码。在此之后,您只需将其包含在实际项目中,然后编译“for real”。当它编译时,你已经在处理该项目的另一个片段,因为它是95%它将成功编译。或者,在编译时,您也可以编写单元测试..