Beispiel #1
0
        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();
            }
        }