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; }
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)); }
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(); } }
public void OnBuildProjectDone(BuildedProject buildedProjectInfo) { bool success = buildedProjectInfo.Success.GetValueOrDefault(true); BuildProgressViewModel.OnBuildProjectDone(success); }
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)); }