14

我知道有一种方法可以显示 Visual Studio 解决方案中包含的每个项目的构建时间。但我正在寻找的是构建整个解决方案所花费的总时间,从我单击构建的那一刻到完成的那一刻。

有没有办法做到这一点?运行 Visual Studio 2008。

4

3 回答 3

11

编辑:这是一种可以将构建时间直接写入构建窗口的方法。

打开 Visual Studio 宏 IDE。
导航到 MyMacros > EnvironmentEvents。
在 MyMacros 下,添加对 System.Windows.Forms 的引用(以下代码显示弹出窗口)。
将此代码添加到 EnvironmentEvents 模块:

Dim buildStart As Date

Private Function IsBuild(ByVal scope As EnvDTE.vsBuildScope, ByVal action As EnvDTE.vsBuildAction) As Boolean
    Return scope = vsBuildScope.vsBuildScopeSolution AndAlso (action = vsBuildAction.vsBuildActionBuild OrElse action = vsBuildAction.vsBuildActionRebuildAll)
End Function

Private Sub BuildEvents_OnBuildBegin(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildBegin
    If (IsBuild(Scope, Action)) Then
        buildStart = Date.Now
    End If
End Sub

Private Sub BuildEvents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone
    If (IsBuild(Scope, Action)) Then
        Dim buildTime = Date.Now - buildStart
        WriteToBuildWindow(String.Format("Build time: {0}", buildTime.ToString))
    End If
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)
    For Each owPane As OutputWindowPane In ow.OutputWindowPanes
        If (owPane.Name.Equals("Build")) Then
            owPane.OutputString(message)
            Exit For
        End If
    Next
End Sub

当您构建或重建完整的解决方案时,最后,构建/重建持续时间将打印到构建输出窗口。您可以更改 IsBuild 中的条件以满足您的偏好。

于 2010-01-21T19:01:49.777 回答
3

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

于 2010-01-21T18:38:18.603 回答
1

这是一个老问题,但我认为有些人可能仍然觉得它有用。

我已经为 VS2015 和 VS2017 编写了一个扩展。它显示每个项目的开始和结束时间,相对于整个构建的开始表示。因此,最后一个项目的结束时间是解决方案的总构建时间。

我在这里发布了更多关于扩展的信息。

于 2019-01-11T11:47:58.377 回答