在Visual Studio中显示构建时间

199

我们的构建服务器在构建一个C++项目时花费的时间太长了。它使用的是Visual Studio 2008,运行命令devenv.com MyApp.sln /Build -- 参见devenv命令行开关(尽管此文档适用于较新版本的VS)。有没有办法让devenv.com记录构建解决方案中每个项目所花费的时间,以便我知道应该在哪里集中精力?

在这种情况下,改进硬件不是一个选项。

我已经尝试过设置输出详细级别(在菜单 工具选项项目和解决方案生成和运行MSBuild项目生成输出日志级别 下)。但这似乎对IDE没有任何影响。

当从命令行运行MSBuild时(对于Visual Studio 2008,需要使用MSBuild v3.5),它会在结束时显示总耗时,但在IDE中则不会。

我真的希望能够获得解决方案中每个项目所花费的时间报告,以便我可以找出构建过程在哪里消耗时间。


devenv.com 不是一个网站,而是 COM 文件 devenv - Peter Mortensen
14个回答

228

菜单工具选项项目和解决方案VC++ 项目设置生成时间应该可行。


89
有人可能会认为它在“构建和运行”下面,但是不,那会太简单了。 - Andreas Bonini
7
如果他们把它放在那里,其他人可能会抱怨它不在他们预期的位置。最明显的放置位置因用户而异。 - JesperE
4
这个会输出什么? - Colonel Panic
5
在“生成和运行”中,您会发现“MSBuild 项目生成输出详细程度”,您可以将其设置为高于“最小值”以获取时间信息。 - Joey
4
这对于在构建阶段内分析单个任务很有用,但不能提供整个构建的摘要。 - Fernando Gonzalez Sanchez
显示剩余2条评论

107

打开菜单 工具选项项目和解决方案生成和运行MSBuild 项目生成输出详细程度。将其设置为“普通”或“详细”,则构建时间将显示在输出窗口中。


2
在 Visual Studio 2010 之前,Visual C++ 项目不使用 MSBuild,因此该设置无效。但对于其他项目类型,它可以很好地工作。 - Roger Lipscombe
34
将设置从“详细”更改为“正常”就足够了 :) - andrecarlucci
9
将此设置为普通确实是大多数人想要的,因为 VC++ 项目设置 -> 构建时间 显示了太多的细节。 - Ghita
3
这正是大多数人想要的 - 总时间,而不是在某个项目中ClCompile花费了22424ms。按Ctrl+Q,构建和运行<Enter>,并将第一个“minimal”更改为“normal”。 - Tomasz Gandor

43

Visual Studio 2012 - 2019

  • 适用于 MSBuild 项目(例如,所有 .NET 项目): 单击 工具选项,然后选择 项目和解决方案生成和运行。 将 MSBuild 项目生成输出详细程度 更改为 正常。这样它会在构建每个解决方案项目时显示经过的时间。 但不幸的是,没有所有项目的经过时间总和。您也将看到构建开始的时间戳。

  • 适用于 C/C++ 项目:

单击 工具选项,然后选择项目和解决方案VC++ 项目设置

更改生成时间信息


4
你提供的解决方案对我在VS 2015的C++项目中也适用。同时,我选择使用这个解决方案而不是“Build Timing”,因为它只显示总时间。 - Or B
2
没有VS2019的更改。 所有MSBuild项目(包括C/C++)的“经过时间”总计显示。 - Farway

26

我创建了一个扩展程序,用于测量构建时间并以图形方式呈现事件顺序:Visual Studio Build Timer

Enter image description here

它可以在Visual Studio市场上获得,并适用于Visual Studio 2015Visual Studio 2017Visual Studio 2019
除了显示哪些项目需要更长时间外,该图表还显示它们之间的有效依赖关系,即需要等待其他项目的项目,这有助于确定需要打破的依赖关系以增加构建的并行性。

6
可以请你升级它以支持 VS 2019吗? - Konstantin Chernov
4
这些天我有些忙,但这在我的计划之中。 - opetroch
1
我认为这应该是首选答案。它安装并且在VS2019版本16.10.3上运行得非常好。相比于Tools->Options->...的接受答案,我认为这个插件提供的结果更好。插件中的日志记录到文件选项可能很不错,但将其记入EXCEL也很容易实现。 - Ross Youngblood
3
希望你有时间支持计算机科学2022 :) - pattakosn
4
请将“Visual Studio Build Timer”扩展程序升级至VS2022,它非常好用!顺便提一下,在这篇博客文章中我提到了它:https://blog.ndepend.com/improve-visual-studio-build-performance/ - Patrick from NDepend team

8

菜单工具选项项目和解决方案生成和运行

将“MSBuild项目生成输出详细程度”从“最小”改为“普通”。


8
你可以使用Build Monitor扩展程序来帮助你实现Visual Studio 2012。

1
你也可以在Visual Studio 2013和2015中使用它。 - Shad

6
如果您想可视化您的构建过程,可以使用Incredibuild。作为Visual Studio 2015 Update 1的一部分,现在可以免费使用Incredibuild的独立模式(不是分布式模式,只能在本地机器上使用8个核心)。
免责声明:我为Incredibuild工作。

非常喜欢Incredibuild...但是无法为它购买正版,所以只能放弃了。 我在一个偏远地区工作,没有足够的本地CPU来建立一个构建农场。 但如果我的情况稍有不同,我肯定能够为它提出合理的理由。几年前,在我进行基准测试时,它在古老的VS6.0和VS2013上表现出色。令人印象深刻的产品。 - undefined

6
如果你还在使用VS2005,你可以使用vs-build-timer插件。在构建完成后,它会显示总共花费的时间以及每个项目持续时间的(可选)摘要。
免责声明:我是这个插件的作者。是的,我需要创建一个安装程序......有一天!

你的安装程序可用吗? - Martin
你创建了吗?12年应该足够的时间。 - Peter Mortensen
恐怕不行 - 大约十年没有积极使用Visual Studio了!请随意创建一个 ;) - MattyT

6

既然你的问题涉及使用命令行中的 DevEnv,我建议同时使用 MSBuild(可以在不修改 .sln 文件的情况下构建它们)。

msbuild /fl /flp:Verbosity=diagnostic Your.sln

msbuild /?会显示文件记录器的其他有用选项。


4

我来到这里是因为我希望在构建输出中包含日期和时间。如果其他人也在寻找类似的东西,只需在项目的属性编译构建事件下添加echo %date% %time%即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接