it-swarm.cn

在Visual Studio中显示构建时间?

我们的构建服务器花了太长时间来构建我们的一个C++项目。它使用Visual Studio 2008.有没有办法让devenv.com记录在解决方案中构建每个项目所花费的时间,以便我知道在哪里集中精力?

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

我已经尝试设置输出详细程度(在工具/选项/项目和解决方案/构建和运行/ MSBuild项目构建输出详细程度下)。这似乎在IDE中没有任何影响。

从命令行运行MSBuild时(对于Visual Studio 2008,它需要是MSBuild v3.5),它显示结束时经过的总时间,但不显示在IDE中。

我真的想要一个解决方案中每个项目的时间报告,以便我可以找出构建过程花费时间的地方。

或者,因为我们实际上使用NAnt来驱动构建过程(我们使用Jetbrains TeamCity),有没有办法让NAnt告诉我每一步所花费的时间?

161
Roger Lipscombe

菜单 工具 选项 项目和解决方案 VC++项目设置 构建时间 应该工作。

183
JesperE

转到工具→选项→项目和解决方案→构建和运行→MSBuild项目构建输出详细程度 - 设置为“正常”或“详细”,构建时间将显示在输出窗口中。

76
Dave Moore

Visual Studio 2012至2017年

  • 对于MSBuild项目(例如所有.Net-Projects):
    单击Tools -> Options然后选择Projects and Solutions -> Build and Run。将MSBuild project build output verbosity更改为Normal。因此,它将在其构建的每个解决方案项目中显示经过的时间。但不幸的是,所有项目都没有经过时间总和。您还将看到Build started Timestamp

  • FOR C/C++项目:

单击Tools -> Options,然后选择Projects and Solutions -> VC++ Project Settings

Build Timing更改为Yes

31
Sebastian

对于Visual Studio 2012,您可以使用 Build Monitor extension。

9
Oliver

如果你坚持使用VS2005,你可以使用 vs-build-timer插件 。在构建完成时,它显示了所花费的总时间和每个项目持续时间的(可选)摘要。

免责声明;我写的。是的,我需要创建一个安装程序...有一天!

5
MattyT

工具 - >选项 - >项目和解决方案 - >构建和运行 - >

将“MSBuild项目构建输出详细程度”从“最小”设置为“正常”

5
RaaFFC

由于您的问题涉及从命令行使用DevEnv,我还建议使用 MSBuild (它可以构建.sln文件而无需修改)。

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

msbuild /?将显示filelogger的其他有用选项。

4
Dave Moore

如果要显示构建,可以使用IncrediBuild。 IncrediBuild现在可以作为Visual Studio 2015 Update 1的一部分免费提供独立模式(未分发但仅在本地计算机上的8个核心上使用)

免责声明:我为IncrediBuild工作

3
buildops

我最终在这里,因为我只想在构建输出中包含日期和时间。如果其他人正在搜索类似的内容,就像将echo %date% %time%添加到项目下的预构建和/或后构建事件一样简单, 属性 编译 构建事件

2
InbetweenWeekends

首先进行构建,然后在构建输出中查看哪个项目首先出现(Ctrl + Home 在输出窗口中)。右键单击该项目→项目属性编译构建事件预构建。和echo ###########%date% %time%#############

因此,每次看到构建结果(或在构建期间)都这样做 Ctrl + Home 在输出窗口中。在那个区域的某个地方,时间和日期盯着你的脸!

哦,您最终可能会将这些细节添加到许多项目中,因为构建顺序可以更改:)


我找到了更好的解决方案! ###

工具选项项目与解决方案构建并运行MSBuild项目构建输出详细程度 =正常(或以上最小)。这会在输出窗口的开头/顶部添加时间。 Ctrl + Home 在输出窗口应该做。

如果我们想看看每个项目花费多少时间项目和解决方案VC++项目设置构建时间=是。它适用于所有项目; “VC++”具有误导性。

2
Blue Clouds

选项 - >项目和解决方案 - > VC++项目设置 - >构建时间

enter image description here 

1
Wesam

如果要调用可跟踪总构建时间的外部程序,可以使用VS 2010的以下解决方案(可能更旧)。下面的代码使用了Caseime Muratori的CTime。当然,您也可以使用它来简单地打印构建时间。

打开宏资源管理器,并在End Module之前粘贴以下内容:

Dim buildStart As Date
Private Sub RunCtime(ByVal StartRatherThanEnd As Boolean)
    Dim Arg As String
    Dim psi As New System.Diagnostics.ProcessStartInfo("ctime.exe")
    If StartRatherThanEnd Then
        psi.Arguments = "-begin"
    Else
        psi.Arguments = "-end"
    End If
    psi.Arguments += " c:\my\path\build.ctm"
    psi.RedirectStandardOutput = False
    psi.WindowStyle = ProcessWindowStyle.Hidden
    psi.UseShellExecute = False
    psi.CreateNoWindow = True
    Dim process As System.Diagnostics.Process
    process = System.Diagnostics.Process.Start(psi)
    Dim myOutput As System.IO.StreamReader = process.StandardOutput
    process.WaitForExit(2000)
    If process.HasExited Then
        Dim output As String = myOutput.ReadToEnd
        WriteToBuildWindow("CTime output: " + output)
    End If
End Sub

Private Sub BuildEvents_OnBuildBegin(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildBegin
    WriteToBuildWindow("Build started!")
    buildStart = Date.Now
    RunCtime(True)
End Sub

Private Sub BuildEvents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone
    Dim buildTime = Date.Now - buildStart
    WriteToBuildWindow(String.Format("Total build time: {0} seconds", buildTime.ToString))
    RunCtime(False)
End Sub

Private Sub WriteToBuildWindow(ByVal message As String)
    Dim win As Window = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)
    Dim ow As OutputWindow = CType(win.Object, OutputWindow)
    If (Not message.EndsWith(vbCrLf)) Then
        message = message + vbCrLf
    End If
    ow.OutputWindowPanes.Item("Build").OutputString(message)
End Sub

答案取自 这里这里

1
Andreas Haferburg

我创建了一个扩展来测量构建时间并在图形中显示事件的顺序: Visual Studio构建计时器

enter image description here 

它可以在视觉工作室市场上买到,适用于VS2015和VS2017。

我发现视觉呈现非常有用。除了显示哪些项目需要更长时间之外,它还显示它们之间的依赖关系,即等待其他项目开始之前完成的项目。这样,您可以发现构建中的瓶颈,并查看需要中断的依赖项,以便增加构建的并行化。

0
opetroch