[xbuild] Reset ConsoleLogger when a build finishes.
authorAnkit Jain <radical@corewars.org>
Tue, 12 Oct 2010 23:21:04 +0000 (04:51 +0530)
committerAnkit Jain <radical@corewars.org>
Tue, 12 Oct 2010 23:27:57 +0000 (04:57 +0530)
MSBuild hosts like monodevelop, which use the same logger
for multiple builds, get errors/warnings from older builds.
So, reset them whenever the BuildFinished event is raised.

ILogger.Shutdown () is invoked when the host is about to quit,
according to msdn, so can't use that.

mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConsoleLogger.cs

index a07b1e4550ed7fe5a3cab5aff2bfec67d0da94d8..2834998c8e916cde5b8a42f7f6acb01192c82528 100644 (file)
@@ -235,6 +235,25 @@ namespace Microsoft.Build.BuildEngine {
                }
                
                public void BuildFinishedHandler (object sender, BuildFinishedEventArgs args)
+               {
+                       BuildFinishedHandlerActual (args);
+
+                       // Reset
+                       events.Clear ();
+                       errorsTable.Clear ();
+                       warningsTable.Clear ();
+                       targetPerfTable.Clear ();
+                       tasksPerfTable.Clear ();
+                       errors.Clear ();
+                       warnings.Clear ();
+
+                       indent = 0;
+                       errorCount = 0;
+                       warningCount = 0;
+                       projectFailed = false;
+               }
+
+               void BuildFinishedHandlerActual (BuildFinishedEventArgs args)
                {
                        if (!IsVerbosityGreaterOrEqual (LoggerVerbosity.Normal)) {
                                PopEvent (args);