我有一个大型的Visual Studio 2010解决方案(~110 C#项目)。一个项目(我们称之为'A')是一个控制台应用程序,它对其他项目和一些第三方程序集有大约6个依赖项。
如果我构建项目'A',它会按预期构建依赖项。
如果我右键单击项目'A'并选择Debug |启动新实例,它首先构建项目,然后继续构建许多其他项目。观察“输出”窗口,就像它不断重新启动这些其他项目及其依赖项的构建过程一样。
问题是原始项目“A”在启动调试器之前不依赖于Visual Studio正在构建的其他项目(直接或间接)。
这意味着启动调试器需要很长时间。
我已经在其他一些项目中定制了.csproj文件,但没有自定义'A'项目。
通过msbuild进行的命令行构建都表现正常。
导致Visual Studio执行此操作的原因是什么?
答案 0 :(得分:2)
这是由于MSBuild的引用链引起的。项目A取决于项目B,项目B依赖于项目C,依此类推。
您有几种选择:
默认情况下,在当前解决方案中使用Copy Local=true
进行新引用。这个过程是构建过程中最耗时的过程之一。有时候只有最顶层的项目(.exe文件)和copy本地属性才有意义,因为lib项目无论如何都不会从他们自己的输出文件夹中运行。
在解决方案Properties
中 - > Configuration Properties
- 默认情况下,每个项目都标记为构建。您可以从构建中取消选中不相关的项目。此设置将保存在.sln文件中,因此请确保您不签入此修改 - 这可能会导致CI版本失败。
编辑:
Tools
> Options
> Projects and Solutions
> Build and Run
> MSBuild project build output verbosity
并设置为Detailed
或Diagnostic
。这将有助于您跟踪构建输出的细微差别。