/// <summary> /// Indicates that a build session is starting /// </summary> public async Task BeginBuildOperation(ProgressMonitor monitor, MSBuildLogger logger, MSBuildVerbosity verbosity, ProjectConfigurationInfo[] configurations) { buildSessionLoggerId = RegisterLogger(monitor.Log, logger); try { var binLogPath = Path.ChangeExtension(Path.GetTempFileName(), "binlog"); await connection.SendMessage(new BeginBuildRequest { BinLogFilePath = binLogPath, LogWriterId = buildSessionLoggerId, EnabledLogEvents = logger != null ? logger.EnabledEvents : MSBuildEvent.None, Verbosity = verbosity, Configurations = configurations }); monitor.LogObject(new BuildSessionStartedEvent { SessionId = buildSessionLoggerId, LogFile = binLogPath, TimeStamp = DateTime.Now }); } catch { UnregisterLogger(buildSessionLoggerId); await CheckDisconnected(); throw; } }
/// <summary> /// Indicates that a build session has finished. /// </summary> /// <returns>The build operation.</returns> public async Task EndBuildOperation(ProgressMonitor monitor) { try { await connection.SendMessage(new EndBuildRequest()); await connection.ProcessPendingMessages(); monitor.LogObject(new BuildSessionFinishedEvent { SessionId = buildSessionLoggerId, TimeStamp = DateTime.Now }); } catch { await CheckDisconnected(); throw; } finally { UnregisterLogger(buildSessionLoggerId); } }