示例#1
0
        /// <summary>
        /// A method called to notify the the tool window that an individual project build is done.
        /// </summary>
        /// <param name="project">The project.</param>
        /// <param name="projectConfig">The project config.</param>
        /// <param name="platform">The platform.</param>
        /// <param name="solutionConfig">The solution config.</param>
        /// <param name="success">True if project build was successful, otherwise false.</param>
        internal void NotifyBuildProjConfigDone(string project, string projectConfig, string platform, string solutionConfig, bool success)
        {
            if (!success)
            {
                _viewModel.HasBuildFailed = true;
            }

            ++NumberOfProjectsBuilt;
            BuildingProjects.Remove(project);
            Caption = GetToolWindowCaption();
            _viewModel.ProgressPercentage = ProgressPercentage;
        }
示例#2
0
        private void BuildEvents_OnBuildProjectDone(string project, string projectconfig, string platform, string solutionconfig, bool success)
        {
            if (BuildAction == BuildActions.BuildActionDeploy)
            {
                return;
            }

            var eventTime = DateTime.Now;

            ProjectItem currentProject;

            if (BuildScope == BuildScopes.BuildScopeBatch)
            {
                currentProject = FindProjectItemInProjectsByUniqueName(project, projectconfig, platform);
                if (currentProject == null)
                {
                    throw new InvalidOperationException();
                }
            }
            else
            {
                currentProject = FindProjectItemInProjectsByUniqueName(project);
                if (currentProject == null)
                {
                    throw new InvalidOperationException();
                }
            }

            lock (_buildingProjectsLockObject)
            {
                BuildingProjects.Remove(currentProject);
            }

            BuildedProject buildedProject = BuildedProjects[currentProject];

            buildedProject.Success = success;

            ProjectState projectState;

            switch (BuildAction)
            {
            case BuildActions.BuildActionBuild:
            case BuildActions.BuildActionRebuildAll:
                if (success)
                {
                    bool upToDate = (_buildLogger != null && _buildLogger.Projects != null &&
                                     !_buildLogger.Projects.Exists(t => t.FileName == buildedProject.FileName));
                    if (upToDate)
                    {
                        // Because ErrorBox will be empty if project is UpToDate.
                        buildedProject.ErrorsBox = currentProject.ErrorsBox;
                    }

                    projectState = upToDate ? ProjectState.UpToDate : ProjectState.BuildDone;
                }
                else
                {
                    bool canceled = (_buildCancelled && buildedProject.ErrorsBox.ErrorsCount == 0);
                    projectState = canceled ? ProjectState.BuildCancelled : ProjectState.BuildError;
                }
                break;

            case BuildActions.BuildActionClean:
                projectState = success ? ProjectState.CleanDone : ProjectState.CleanError;
                break;

            case BuildActions.BuildActionDeploy:
                throw new InvalidOperationException("vsBuildActionDeploy not supported");

            default:
                throw new ArgumentOutOfRangeException();
            }

            OnBuildProjectDone(this, new BuildProjectEventArgs(currentProject, projectState, eventTime, buildedProject));
        }
示例#3
0
        private void BuildEvents_OnBuildProjectDone(string project, string projectconfig, string platform, string solutionconfig, bool success)
        {
            if (BuildAction == BuildActions.BuildActionDeploy)
            {
                return;
            }

            var eventTime      = DateTime.Now;
            var currentProject = GetCurrentProject(project, projectconfig, platform);

            lock (_buildingProjectsLockObject)
            {
                BuildingProjects.Remove(currentProject);
            }

            BuildedProject buildedProject = BuildedProjects[currentProject];

            buildedProject.Success = success;

            ProjectState projectState;

            switch (BuildAction)
            {
            case BuildActions.BuildActionBuild:
            case BuildActions.BuildActionRebuildAll:
                if (success)
                {
                    if (_viewModel.ControlSettings.GeneralSettings.ShowWarningSignForBuilds && buildedProject.ErrorsBox.WarningsCount > 0)
                    {
                        projectState = ProjectState.BuildWarning;
                    }
                    else
                    {
                        bool upToDate = (_buildLogger != null && _buildLogger.Projects != null &&
                                         !_buildLogger.Projects.Exists(t => t.FileName == buildedProject.FileName));
                        if (upToDate)
                        {
                            // Because ErrorBox will be empty if project is UpToDate.
                            buildedProject.ErrorsBox = currentProject.ErrorsBox;
                        }
                        projectState = upToDate ? ProjectState.UpToDate : ProjectState.BuildDone;
                    }
                }
                else
                {
                    bool canceled = (_buildCancelled && buildedProject.ErrorsBox.ErrorsCount == 0);
                    projectState = canceled ? ProjectState.BuildCancelled : ProjectState.BuildError;
                }
                break;

            case BuildActions.BuildActionClean:
                projectState = success ? ProjectState.CleanDone : ProjectState.CleanError;
                break;

            case BuildActions.BuildActionDeploy:
                throw new InvalidOperationException("vsBuildActionDeploy not supported");

            default:
                throw new ArgumentOutOfRangeException(nameof(BuildAction));
            }

            buildedProject.ProjectState = projectState;
            OnBuildProjectDone(this, new BuildProjectEventArgs(currentProject, projectState, eventTime, buildedProject));
        }