private void BuildEvents_OnBuildDone() { try { var settings = _viewModel.ControlSettings; if (_buildContext.BuildScope == BuildScopes.BuildScopeSolution) { foreach (var projectItem in _viewModel.ProjectsList) { if (projectItem.State == ProjectState.Pending) { projectItem.State = ProjectState.Skipped; } } } _viewModel.UpdateIndicators(_buildContext); var message = BuildMessages.GetBuildDoneMessage(_viewModel.SolutionItem, _buildContext, settings.BuildMessagesSettings); var buildDoneImage = BuildImages.GetBuildDoneImage(_buildContext, _viewModel.ProjectsList, out ControlTemplate stateImage); OutputInStatusBar(message, false); _viewModel.TextCurrentState = message; _viewModel.ImageCurrentState = buildDoneImage; _viewModel.ImageCurrentStateResult = stateImage; _viewModel.CurrentProject = null; _viewModel.OnBuildDone(_buildContext); int errorProjectsCount = _viewModel.ProjectsList.Count(item => item.State.IsErrorState()); if (errorProjectsCount > 0 || _buildContext.BuildIsCancelled) { ApplyToolWindowStateAction(settings.WindowSettings.WindowActionOnBuildError); } else { ApplyToolWindowStateAction(settings.WindowSettings.WindowActionOnBuildSuccess); } bool navigateToBuildFailureReason = (!_buildContext.BuildedProjects.BuildWithoutErrors && settings.GeneralSettings.NavigateToBuildFailureReason == NavigateToBuildFailureReasonCondition.OnBuildDone); if (navigateToBuildFailureReason && _buildContext.BuildedProjects.Any(p => p.ErrorsBox.Errors.Any(NavigateToErrorItem))) { _buildErrorIsNavigated = true; } } catch (Exception ex) { ex.TraceUnknownException(); } }