public void StatusEventRaised(object sender, BuildStatusEventArgs e) { try { lock (syncLock) { if (e is ProjectEvaluationStartedEventArgs projectEvaluationStarted) { var evaluationId = projectEvaluationStarted.BuildEventContext.EvaluationId; var projectFilePath = Intern(projectEvaluationStarted.ProjectFile); var projectName = Intern(Path.GetFileName(projectFilePath)); var nodeName = Intern(GetEvaluationProjectName(evaluationId, projectName)); var projectEvaluation = new ProjectEvaluation { Name = nodeName }; EvaluationFolder.AddChild(projectEvaluation); projectEvaluation.ProjectFile = projectFilePath; projectEvaluation.Id = evaluationId; projectEvaluation.EvaluationText = Intern("id:" + evaluationId); projectEvaluation.NodeId = e.BuildEventContext.NodeId; projectEvaluation.StartTime = e.Timestamp; projectEvaluation.EndTime = e.Timestamp; } else if (e is ProjectEvaluationFinishedEventArgs projectEvaluationFinished) { var evaluationId = projectEvaluationFinished.BuildEventContext.EvaluationId; var projectFilePath = Intern(projectEvaluationFinished.ProjectFile); var projectName = Intern(Path.GetFileName(projectFilePath)); var nodeName = Intern(GetEvaluationProjectName(evaluationId, projectName)); var projectEvaluation = EvaluationFolder.FindLastChild <ProjectEvaluation>(e => e.Id == evaluationId); if (projectEvaluation == null) { // no matching ProjectEvaluationStarted return; } projectEvaluation.EndTime = e.Timestamp; var profilerResult = projectEvaluationFinished.ProfilerResult; if (profilerResult != null && projectName != null) { ConstructProfilerResult(projectEvaluation, profilerResult.Value); } if (projectEvaluationFinished.GlobalProperties != null) { AddGlobalProperties(projectEvaluation, projectEvaluationFinished.GlobalProperties); } AddProperties(projectEvaluation, projectEvaluationFinished.Properties); AddItems(projectEvaluation, projectEvaluationFinished.Items); } } } catch (Exception ex) { HandleException(ex); } }
public void StatusEventRaised(object sender, BuildStatusEventArgs e) { try { lock (syncLock) { // This happens when we consume args created by us (deserialized) if (e is ProjectEvaluationStartedEventArgs projectEvaluationStarted) { var evaluationId = Reflector.GetEvaluationId(projectEvaluationStarted.BuildEventContext); var projectName = Intern(projectEvaluationStarted.ProjectFile); var nodeName = Intern(GetEvaluationProjectName(evaluationId, projectName)); var project = EvaluationFolder.GetOrCreateNodeWithName <Project>(nodeName); if (project.ProjectFile == null) { project.ProjectFile = projectName; } // we stash the evaluation Id as a negative ProjectContextId project.Id = evaluationId; } else if (e is ProjectEvaluationFinishedEventArgs projectEvaluationFinished) { var projectName = Intern(projectEvaluationFinished.ProjectFile); var profilerResult = projectEvaluationFinished.ProfilerResult; if (profilerResult != null && projectName != null) { var evaluationId = Reflector.GetEvaluationId(projectEvaluationFinished.BuildEventContext); var nodeName = Intern(GetEvaluationProjectName(evaluationId, projectName)); var project = EvaluationFolder.GetOrCreateNodeWithName <Project>(nodeName); ConstructProfilerResult(project, profilerResult.Value); } } // this happens during live build using MSBuild 15.3 or newer else if (e.GetType().Name == "ProjectEvaluationStartedEventArgs") { var projectName = Intern(TextUtilities.ParseQuotedSubstring(e.Message)); var evaluationId = Reflector.GetEvaluationId(e.BuildEventContext); var nodeName = Intern(GetEvaluationProjectName(evaluationId, projectName)); var project = EvaluationFolder.GetOrCreateNodeWithName <Project>(nodeName); project.Id = Reflector.GetEvaluationId(e.BuildEventContext); if (project.ProjectFile == null) { project.ProjectFile = projectName; } } } } catch (Exception ex) { HandleException(ex); } }
public void StatusEventRaised(object sender, BuildStatusEventArgs e) { try { lock (syncLock) { // This happens when we consume args created by us (deserialized) if (e is ProjectEvaluationStartedEventArgs projectEvaluationStarted) { var evaluationId = projectEvaluationStarted.BuildEventContext.EvaluationId; var projectName = Intern(projectEvaluationStarted.ProjectFile); var nodeName = Intern(GetEvaluationProjectName(evaluationId, projectName)); var projectEvaluation = EvaluationFolder.GetOrCreateNodeWithName <ProjectEvaluation>(nodeName); if (projectEvaluation.ProjectFile == null) { projectEvaluation.ProjectFile = projectName; } projectEvaluation.Id = evaluationId; projectEvaluation.NodeId = e.BuildEventContext.NodeId; projectEvaluation.StartTime = e.Timestamp; projectEvaluation.EndTime = e.Timestamp; } else if (e is ProjectEvaluationFinishedEventArgs projectEvaluationFinished) { var projectName = Intern(projectEvaluationFinished.ProjectFile); var evaluationId = projectEvaluationFinished.BuildEventContext.EvaluationId; var nodeName = Intern(GetEvaluationProjectName(evaluationId, projectName)); var projectEvaluation = EvaluationFolder.GetOrCreateNodeWithName <ProjectEvaluation>(nodeName); projectEvaluation.EndTime = e.Timestamp; var profilerResult = projectEvaluationFinished.ProfilerResult; if (profilerResult != null && projectName != null) { ConstructProfilerResult(projectEvaluation, profilerResult.Value); } } } } catch (Exception ex) { HandleException(ex); } }