private void BuildEvents_OnBuildProjectDone(string project, string projectconfig,
            string platform, string solutionconfig, bool success)
        {
            if (_buildAction == vsBuildAction.vsBuildActionDeploy)
                return;

            var eventTime = DateTime.Now;

            ProjectItem currentProject;
            if (_buildScope == vsBuildScope.vsBuildScopeBatch)
            {
                var projectDefinition = new UniqueNameProjectDefinition(project, projectconfig, platform);
                currentProject = _findProjectItem(projectDefinition, FindProjectProperty.UniqueNameProjectDefinition);
                if (currentProject == null)
                    throw new InvalidOperationException();
            }
            else
            {
                currentProject = _findProjectItem(project, FindProjectProperty.UniqueName);
                if (currentProject == null)
                    throw new InvalidOperationException();
            }

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

            BuildedProject buildedProject = _buildedProjects[currentProject];
            buildedProject.Success = success;

            ProjectState projectState;
            switch (_buildAction)
            {
                case vsBuildAction.vsBuildActionBuild:
                case vsBuildAction.vsBuildActionRebuildAll:
                    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 vsBuildAction.vsBuildActionClean:
                    projectState = success ? ProjectState.CleanDone : ProjectState.CleanError;
                    break;

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

                default:
                    throw new ArgumentOutOfRangeException();
            }

            OnBuildProjectDone(this, new BuildProjectEventArgs(currentProject, projectState, eventTime, buildedProject));
        }
Example #2
0
        private void BuildEvents_OnBuildProjectDone(string project, string projectconfig,
                                                    string platform, string solutionconfig, bool success)
        {
            if (_buildAction == vsBuildAction.vsBuildActionDeploy)
            {
                return;
            }

            var eventTime = DateTime.Now;

            ProjectItem currentProject;

            if (_buildScope == vsBuildScope.vsBuildScopeBatch)
            {
                var projectDefinition = new UniqueNameProjectDefinition(project, projectconfig, platform);
                currentProject = _findProjectItem(projectDefinition, FindProjectProperty.UniqueNameProjectDefinition);
                if (currentProject == null)
                {
                    throw new InvalidOperationException();
                }
            }
            else
            {
                currentProject = _findProjectItem(project, FindProjectProperty.UniqueName);
                if (currentProject == null)
                {
                    throw new InvalidOperationException();
                }
            }

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

            BuildedProject buildedProject = _buildedProjects[currentProject];

            buildedProject.Success = success;

            ProjectState projectState;

            switch (_buildAction)
            {
            case vsBuildAction.vsBuildActionBuild:
            case vsBuildAction.vsBuildActionRebuildAll:
                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 vsBuildAction.vsBuildActionClean:
                projectState = success ? ProjectState.CleanDone : ProjectState.CleanError;
                break;

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

            default:
                throw new ArgumentOutOfRangeException();
            }

            OnBuildProjectDone(this, new BuildProjectEventArgs(currentProject, projectState, eventTime, buildedProject));
        }
        private void BuildEvents_OnBuildProjectBegin(
            string project,
            string projectconfig,
            string platform,
            string solutionconfig)
        {
            if (_buildAction == vsBuildAction.vsBuildActionDeploy)
                return;

            var eventTime = DateTime.Now;

            ProjectItem currentProject;
            if (_buildScope == vsBuildScope.vsBuildScopeBatch)
            {
                var projectDefinition = new UniqueNameProjectDefinition(project, projectconfig, platform);
                currentProject = _findProjectItem(projectDefinition, FindProjectProperty.UniqueNameProjectDefinition);
                if (currentProject == null)
                {
                    var proj = _findProjectItem(project, FindProjectProperty.UniqueName);
                    currentProject = (proj ?? new ProjectItem()).GetBatchBuildCopy(projectconfig, platform);
                }
            }
            else
            {
                currentProject = _findProjectItem(project, FindProjectProperty.UniqueName);
                if (currentProject == null)
                    throw new InvalidOperationException();
            }

            lock (_buildingProjectsLockObject)
            {
                _buildingProjects.Add(currentProject);
            }

            ProjectState projectState;
            switch (_buildAction)
            {
                case vsBuildAction.vsBuildActionBuild:
                case vsBuildAction.vsBuildActionRebuildAll:
                    projectState = ProjectState.Building;
                    break;

                case vsBuildAction.vsBuildActionClean:
                    projectState = ProjectState.Cleaning;
                    break;

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

                default:
                    throw new ArgumentOutOfRangeException();
            }

            OnBuildProjectBegin(this, new BuildProjectEventArgs(currentProject, projectState, eventTime, null));
        }
Example #4
0
        private void BuildEvents_OnBuildProjectBegin(
            string project,
            string projectconfig,
            string platform,
            string solutionconfig)
        {
            if (_buildAction == vsBuildAction.vsBuildActionDeploy)
            {
                return;
            }

            var eventTime = DateTime.Now;

            ProjectItem currentProject;

            if (_buildScope == vsBuildScope.vsBuildScopeBatch)
            {
                var projectDefinition = new UniqueNameProjectDefinition(project, projectconfig, platform);
                currentProject = _findProjectItem(projectDefinition, FindProjectProperty.UniqueNameProjectDefinition);
                if (currentProject == null)
                {
                    var proj = _findProjectItem(project, FindProjectProperty.UniqueName);
                    currentProject = (proj ?? new ProjectItem()).GetBatchBuildCopy(projectconfig, platform);
                }
            }
            else
            {
                currentProject = _findProjectItem(project, FindProjectProperty.UniqueName);
                if (currentProject == null)
                {
                    throw new InvalidOperationException();
                }
            }

            lock (_buildingProjectsLockObject)
            {
                _buildingProjects.Add(currentProject);
            }

            ProjectState projectState;

            switch (_buildAction)
            {
            case vsBuildAction.vsBuildActionBuild:
            case vsBuildAction.vsBuildActionRebuildAll:
                projectState = ProjectState.Building;
                break;

            case vsBuildAction.vsBuildActionClean:
                projectState = ProjectState.Cleaning;
                break;

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

            default:
                throw new ArgumentOutOfRangeException();
            }

            OnBuildProjectBegin(this, new BuildProjectEventArgs(currentProject, projectState, eventTime, null));
        }