Ejemplo n.º 1
0
 public void UpdatePostBuildProperties(BuildedProject buildedProjectInfo)
 {
     if (buildedProjectInfo != null)
     {
         ErrorsBox = buildedProjectInfo.ErrorsBox;
     }
 }
 public BuildProjectEventArgs(ProjectItem projectItem, ProjectState projectState, DateTime eventTime, BuildedProject buildedProjectInfo)
 {
     ProjectItem        = projectItem;
     ProjectState       = projectState;
     EventTime          = eventTime;
     BuildedProjectInfo = buildedProjectInfo;
 }
Ejemplo n.º 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;

            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));
        }
Ejemplo n.º 4
0
        private void EventSource_ErrorRaised(BuildOutputLogger loggerSender, LazyFormattedBuildEventArgs e, ErrorLevel errorLevel)
        {
            try
            {
                bool verified = VerifyLoggerBuildEvent(loggerSender, e, errorLevel);
                if (!verified)
                {
                    return;
                }

                int projectInstanceId = e.BuildEventContext.ProjectInstanceId;
                int projectContextId  = e.BuildEventContext.ProjectContextId;

                var projectEntry = loggerSender.Projects.Find(t => t.InstanceId == projectInstanceId && t.ContextId == projectContextId);
                if (projectEntry == null)
                {
                    TraceManager.Trace(string.Format("Project entry not found by ProjectInstanceId='{0}' and ProjectContextId='{1}'.", projectInstanceId, projectContextId), EventLogEntryType.Warning);
                    return;
                }
                if (projectEntry.IsInvalid)
                {
                    return;
                }

                if (!GetProjectItem(projectEntry, out var projectItem))
                {
                    projectEntry.IsInvalid = true;
                    return;
                }

                BuildedProject buildedProject = BuildedProjects[projectItem];
                var            errorItem      = new ErrorItem(errorLevel, (eI) =>
                {
                    _packageContext.GetDTE().Solution.GetProject(x => x.UniqueName == projectItem.UniqueName).NavigateToErrorItem(eI);
                });

                switch (errorLevel)
                {
                case ErrorLevel.Message:
                    Init(errorItem, (BuildMessageEventArgs)e);
                    break;

                case ErrorLevel.Warning:
                    Init(errorItem, (BuildWarningEventArgs)e);
                    break;

                case ErrorLevel.Error:
                    Init(errorItem, (BuildErrorEventArgs)e);
                    break;

                default:
                    throw new ArgumentOutOfRangeException("errorLevel");
                }
                errorItem.VerifyValues();
                buildedProject.ErrorsBox.Add(errorItem);
                OnErrorRaised(this, new BuildErrorRaisedEventArgs(errorLevel, buildedProject));
            }
            catch (Exception ex)
            {
                ex.TraceUnknownException();
            }
        }
Ejemplo n.º 5
0
        public void OnBuildProjectDone(BuildedProject buildedProjectInfo)
        {
            bool success = buildedProjectInfo.Success.GetValueOrDefault(true);

            BuildProgressViewModel.OnBuildProjectDone(success);
        }
Ejemplo n.º 6
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));
        }