我知道有a way to display the build time of each project contained in a solution in visual studio。但我正在寻找的是构建整个解决方案所花费的总时间,从我点击构建的那一刻起到完成它的那一刻。
有没有这样做?运行Visual Studio 2008。
答案 0 :(得分: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中的条件以满足您的偏好。
答案 1 :(得分:3)
工具 - >选项 - >项目和解决方案 - > VC ++项目设置 - >构建计时
答案 2 :(得分:1)
这是一个古老的问题,但我认为有些人仍然会发现它有用。
我已经为VS2015和VS2017编写了扩展。它显示每个项目的开始和结束时间,相对于整个构建的开始表示。因此,最后一个项目的结束时间是该解决方案的总构建时间。
我发布了有关扩展名here的更多信息。