14

VisualStudioのソリューションに含まれる各プロジェクトのビルド時間を表示する方法があることを私は知っています。しかし、私が探しているのは、ビルドをクリックしてから完了するまでの、ソリューション全体のビルドにかかった合計時間です。

とにかくこれを行うことはありますか?VisualStudio2008を実行しています。

4

3 に答える 3

11

編集:これは、ビルド時間をビルドウィンドウに直接書き込む方法です。

Visual StudioMacroIDEを開きます。
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 に答える