2010-01-21 64 views

回答

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

我已經將此代碼添加到此問題中:http://stackoverflow.com/questions/523220/awesome-visual-studio-macros我希望其他具有類似有用宏的人也將其添加到此處。 Visual Studio宏編輯器功能非常強大,但是我沒有在任何地方運行好宏庫。 – 2010-01-21 19:50:28

+0

編輯:奇怪的是,在我的電腦之一構建結束事件是catched ...但不通過IsBuild測試,所以只是返回。我在計算機上使用Visual Assist X,如果這有什麼區別,就不能檢測到事件。 – levesque 2010-01-21 20:03:24

+0

在宏IDE(查看菜單>錯誤列表)中打開錯誤列表,查看是否列出了任何錯誤。宏IDE對於錯誤有點奇怪;除了宏不起作用之外,它往往不會給你任何跡象。很可能你錯過了一個Imports語句或其他東西。 – 2010-01-21 20:06:06

3

工具 - >選項 - >項目和解決方案 - > VC++項目設置 - >建設時序

+0

這將輸出各個項目的構建時間。 – levesque 2010-01-21 18:41:25

+1

Bugger ...那麼,你可以手動添加它們......不難做... – Goz 2010-01-21 18:50:24

+2

是的,但我很懶......我的解決方案中有大約30個項目... – levesque 2010-01-21 18:52:31

相關問題