选择“调试|启动新实例”时进行多次重建

时间:2012-03-15 03:24:42

标签: visual-studio-2010 msbuild

我有一个大型的Visual Studio 2010解决方案(~110 C#项目)。一个项目(我们称之为'A')是一个控制台应用程序,它对其他项目和一些第三方程序集有大约6个依赖项。

如果我构建项目'A',它会按预期构建依赖项。

如果我右键单击项目'A'并选择Debug |启动新实例,它首先构建项目,然后继续构建许多其他项目。观察“输出”窗口,就像它不断重新启动这些其他项目及其依赖项的构建过程一样。

问题是原始项目“A”在启动调试器之前不依赖于Visual Studio正在构建的其他项目(直接或间接)。

这意味着启动调试器需要很长时间。

我已经在其他一些项目中定制了.csproj文件,但没有自定义'A'项目。

通过msbuild进行的命令行构建都表现正常。

导致Visual Studio执行此操作的原因是什么?

1 个答案:

答案 0 :(得分:2)

这是由于MSBuild的引用链引起的。项目A取决于项目B,项目B依赖于项目C,依此类推。

您有几种选择:

  1. 默认情况下,在当前解决方案中使用Copy Local=true进行新引用。这个过程是构建过程中最耗时的过程之一。有时候只有最顶层的项目(.exe文件)和copy本地属性才有意义,因为lib项目无论如何都不会从他们自己的输出文件夹中运行。

  2. 在解决方案Properties中 - > Configuration Properties - 默认情况下,每个项目都标记为构建。您可以从构建中取消选中不相关的项目。此设置将保存在.sln文件中,因此请确保您不签入此修改 - 这可能会导致CI版本失败。

  3. 编辑:

    • 要进一步分析构建过程,请增加MSBuild详细程度:Tools> Options> Projects and Solutions> Build and Run> MSBuild project build output verbosity并设置为DetailedDiagnostic。这将有助于您跟踪构建输出的细微差别。