Some time ago, I ran across this conundrum: Why does Visual Studio continue to build projects when a dependent project failed to compile?
So, I took it upon myself to figure out how to stop the Visual Studio compiler from building projects unnecessarily. That is: stop building immediately after it encounters an error.
My solution took the form of a Visual Studio macro.
For the uninitiated: that means writing some Visual Basic code to manage the IDE.
For the initiated: You can cringe with me… :P
So, I opened the Visual Studio Macros IDE and attached an event handler to the BuildEvents object in the EnvironmentEvents module with the following code snippet:
Private Sub BuildEvents_OnBuildProjConfigDone(ByVal Project As String, ByVal ProjectConfig As String, ByVal Platform As String, ByVal SolutionConfig As String, ByVal Success As Boolean) Handles BuildEvents.OnBuildProjConfigDone '-- When the build of a project fails If (Not Success) Then '-- Cancel the remaining builds in the Solution DTE.ExecuteCommand("Build.Cancel") '-- Write a polite message to the OutputWindow that's logging all information about this build DTE.ToolWindows.OutputWindow.ActivePane.OutputString(vbCrLf & vbCrLf & "Build failed while compiling " & Project) End If End Sub
Pretty simple, and prevents Visual Studio from running through all of the projects.
Next time, I’m going to attach a timer and start recording my build times to see how the solution has grown.