Add the following macro to the VS EnvironmentEvent Module (Tools-> Macros-> IDE Macros ...) or ALT + F11. The macro is executed after the assembly is completed, successfully or not.
This will cause the text to exit the output window, namely the Build view of the output window in build_output.log . Other IDE Guides can be found on MSDN .
As a reference, the solution was based on the HOWTO: get the output string OutputWindowPane to output some string from a Visual Studio add-in or macro
Visual Studio provides window output ("View", "Other windows", "Exit" menu) for displaying messages, debugging information, etc. This window provides several panels that can be selected through the combo box, for example, "Source Control", "Build", "Debug", etc.
The Automation Model (EnvDTE) provides EnvDTE.OutputWindow, EnvDTE.OutputWindowPanes, and EnvDTE.OutputWindowPane Classes.
Private Sub BuildEvents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone Const BUILD_OUTPUT_PANE_GUID As String = "{1BD8A850-02D1-11D1-BEE7-00A0C913D1F8}" Dim t As OutputWindowPane Dim txtOutput As TextDocument Dim txtSelection As TextSelection Dim vsWindow As Window vsWindow = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput) Dim vsOutputWindow As OutputWindow Dim objOutputWindowPane As OutputWindowPane Dim objBuildOutputWindowPane As OutputWindowPane vsOutputWindow = DirectCast(vsWindow.Object, OutputWindow) For Each objOutputWindowPane In vsOutputWindow.OutputWindowPanes If objOutputWindowPane.Guid.ToUpper = BUILD_OUTPUT_PANE_GUID Then objBuildOutputWindowPane = objOutputWindowPane Exit For End If Next txtOutput = objBuildOutputWindowPane.TextDocument txtSelection = txtOutput.Selection txtSelection.StartOfDocument(False) txtSelection.EndOfDocument(True) objBuildOutputWindowPane.OutputString(Date.Now) txtSelection = txtOutput.Selection solutionDir = IO.Path.GetDirectoryName(DTE.Solution.FullName) My.Computer.FileSystem.WriteAllText(solutionDir & "\build_output.log", txtSelection.Text, False) MsgBox(txtSelection.Text) End Sub
The above can be modified to possibly display construction information for each project. File names for build logs, etc., can probably be configured based on the current project (not too sure about this), and above all, you can save the build history.
There are all the VS events that you can catch on, so the type of things you can do is endless
This has been tested on the VS2010 Ultimate ...