public override void Shutdown() { base.Shutdown(); if (projectImportsCollector != null) { var bytes = projectImportsCollector.GetAllBytes(); construction.Build.SourceFilesArchive = bytes; projectImportsCollector.Close(); projectImportsCollector = null; } if (SaveLogToDisk) { try { if (Path.IsPathRooted(_logFile)) { var parentDirectory = Path.GetDirectoryName(_logFile); if (!Directory.Exists(parentDirectory)) { Directory.CreateDirectory(parentDirectory); } } Serialization.Write(construction.Build, _logFile); } catch (Exception ex) { ErrorReporting.ReportException(ex); } } else { CurrentBuild = construction.Build; } }
/// <summary> /// Closes the underlying file stream. /// </summary> public void Shutdown() { Environment.SetEnvironmentVariable("MSBUILDTARGETOUTPUTLOGGING", _initialTargetOutputLogging); Environment.SetEnvironmentVariable("MSBUILDLOGIMPORTS", _initialLogImports); if (projectImportsCollector != null) { if (CollectProjectImports == ProjectImportsCollectionMode.Embed) { eventArgsWriter.WriteBlob(BinaryLogRecordKind.ProjectImportArchive, projectImportsCollector.GetAllBytes()); } projectImportsCollector.Close(); projectImportsCollector = null; } if (stream != null) { // It's hard to determine whether we're at the end of decoding GZipStream // so add an explicit 0 at the end to signify end of file stream.WriteByte((byte)BinaryLogRecordKind.EndOfFile); stream.Flush(); stream.Dispose(); stream = null; } }