Visual Studio开始构建之前的长时间延迟

时间:2015-03-04 21:24:47

标签: c# .net visual-studio visual-studio-2012 msbuild

我有一个包含50个项目的解决方案,每个项目至少有100个文件(我认为这些文件是相关的)。

问题是当我构建解决方案或单个项目时,在构建输出"之前有5到10秒的延迟。窗口被写入。设置"构建输出"详细说明"诊断"没有任何迹象表明延迟的原因是什么。当没有文件被更改(先前构建)时,甚至会发生此延迟。

=== Build: 0 succeeded, 0 failed, 10 up-to-date, 0 skipped ==========

当有变化时,在构建输出中,它表示构建需要大约2秒才能完成,但端到端大约需要7到12秒。

构建输出:

1>(omitted)
1>Time Elapsed 00:00:01.99
========== Build: 1 succeeded, 0 failed, 9 up-to-date, 0 skipped ==========

的MSBuild:

Build succeeded.
     0 Warning(s)
     0 Error(s)

 Time Elapsed 00:00:02.17

 C:\Projects\SharedKernel.Tests>

通过命令行运行MSBuild没有这样的延迟,2.17秒是按下键盘完成的时间。

据我所知,msbuild任务本身在Visual Studio中快速执行,但似乎Visual Studio在msbuild任务启动之前在幕后做了一些导致这种延迟的事情。

当我通过Process Monitor检查Visual Studio(devenv.exe)时,我注意到对项目中的每个文件和文件夹都调用了CreateFileQueryDirectoryCloseFile项目的依赖关系。这似乎与查看时间表时的延迟有关。

如何减少从Visual Studio(右键单击项目>构建)开始构建构建过程到构建实际发生时的延迟?

我查看了以下答案以供解决,但是他们要么不减少延迟,要么根本不适用:

3 个答案:

答案 0 :(得分:0)

我认为你的问题是"我有50个项目的解决方案"。 根据我的经验,这不应该用于开发。这应该只用于构建服务器。 所以我要做的是,制作几个解决方案文件。对于构建服务器的所有项目来说都很重要,还有几个只有几个项目用于开发。这几种解决方案的包装应该以经常变化的方式为指导。如果答案是一切,我会质疑项目结构。

因为我没有真正回答你的问题,与msbuild相比,vs究竟是什么,我会将其作为评论。但是我现在的声誉还不够(正在努力),但因为没有其他人推荐这个,我认为这是值得回答的。或者这是否太明显,没有人指出这一点?那请原谅我。

答案 1 :(得分:0)

Visual Studio有其自己的检查项目是否最新的方式。这样可以避免对MSBuild的昂贵调用,并且在仅需要构建一部分项目的情况下,通常可以节省大量时间。

这个问题已经很老了,这些天磁盘趋向于更快,但是上面的评论是正确的。 VS必须测试项目的每个输入和输出的时间戳,以确定事情是否是最新的。如果您有大量的输入/输出,这可能需要一段时间,尤其是在磁盘速度较慢的情况下。

较新的VS版本对最新检查进行了改进。您可以在此处阅读有关SDK样式项目使用的快速最新检查的更多信息:

https://github.com/dotnet/project-system/blob/master/docs/up-to-date-check.md

答案 2 :(得分:0)

我有同样的问题。卸载您不需要的所有项目将有所帮助。我设法将构建开始之前的时间从大约9秒减少到1秒。

我想这不是解决方案,而是解决方案,但这很有帮助。

要卸载项目,请右键单击它,然后选择“卸载项目”。