private void OnProjectStarted(object sender, ProjectStartedEventArgs e) { var entry = new BuildProjectContextEntry(e.ProjectFile, e.GlobalProperties); if (!_projectsLookup.ContainsKey(entry.ProjectFile)) { _projectsLookup.Add(entry.ProjectFile, entry); } }
private void BuildOutputLogger_OnErrorRaised(BuildProjectContextEntry projectEntry, object e, ErrorLevel errorLevel) { try { var projectItem = projectEntry.ProjectItem; if (projectItem == null) { if (!TryGetProjectItem(projectEntry, out projectItem)) { projectEntry.IsInvalid = true; return; } } var errorItem = new ErrorItem(errorLevel); switch (errorLevel) { case ErrorLevel.Message: errorItem.Init((BuildMessageEventArgs)e); break; case ErrorLevel.Warning: errorItem.Init((BuildWarningEventArgs)e); break; case ErrorLevel.Error: errorItem.Init((BuildErrorEventArgs)e); break; default: break; } errorItem.VerifyValues(); projectItem.AddErrorItem(errorItem); var args = new BuildErrorRaisedEventArgs(errorLevel, projectItem); bool buildNeedCancel = (args.ErrorLevel == ErrorLevel.Error && _packageSettingsProvider.Settings.GeneralSettings.StopBuildAfterFirstError); if (buildNeedCancel) { _buildService.CancelBuildSolution(); } bool navigateToBuildFailure = (args.ErrorLevel == ErrorLevel.Error && _packageSettingsProvider.Settings.GeneralSettings.NavigateToBuildFailureReason == NavigateToBuildFailureReasonCondition.OnErrorRaised); if (navigateToBuildFailure && !ErrorNavigationService.BuildErrorNavigated) { _errorNavigationService.NavigateToErrorItem(errorItem); } } catch (Exception ex) { _logger.Error(ex, "Failed to fetch errormessage."); } }
private bool GetProjectItem(BuildProjectContextEntry projectEntry, out ProjectItem projectItem) { projectItem = projectEntry.ProjectItem; if (projectItem != null) { return(true); } string projectFile = projectEntry.FileName; if (ProjectExtensions.IsProjectHidden(projectFile)) { return(false); } IDictionary <string, string> projectProperties = projectEntry.Properties; var project = _viewModel.ProjectsList.FirstOrDefault(x => x.FullName == projectFile); if (BuildScope == BuildScopes.BuildScopeBatch && projectProperties.ContainsKey("Configuration") && projectProperties.ContainsKey("Platform")) { string projectConfiguration = projectProperties["Configuration"]; string projectPlatform = projectProperties["Platform"]; projectItem = FindProjectItemInProjectsByUniqueName(project.UniqueName, projectConfiguration, projectPlatform); if (projectItem == null) { TraceManager.Trace( string.Format("Project Item not found by: UniqueName='{0}', Configuration='{1}, Platform='{2}'.", project.UniqueName, projectConfiguration, projectPlatform), EventLogEntryType.Warning); return(false); } } else { projectItem = FindProjectItemInProjectsByUniqueName(project.UniqueName); if (projectItem == null) { TraceManager.Trace(string.Format("Project Item not found by FullName='{0}'.", projectFile), EventLogEntryType.Warning); return(false); } } projectEntry.ProjectItem = projectItem; return(true); }
private bool TryGetProjectItem(BuildProjectContextEntry projectEntry, out IProjectItem projectItem) { projectItem = projectEntry?.ProjectItem; if (projectItem != null) { return(true); } string projectFile = projectEntry.ProjectFile; if (ProjectExtensions.IsProjectHidden(projectFile)) { return(false); } var projectProperties = projectEntry.Properties; if (projectProperties.ContainsKey("Configuration") && projectProperties.ContainsKey("Platform")) { string projectConfiguration = projectProperties["Configuration"]; string projectPlatform = projectProperties["Platform"]; projectItem = Projects.FirstOrDefault(item => $"{item.FullName}-{item.Configuration}|{item.Platform.Replace(" ", "")}" == $"{projectFile}-{projectConfiguration}|{projectPlatform}"); if (projectItem == null) { var project = Projects.FirstOrDefault(x => x.FullName == projectFile); if (project == null) { _logger.Error("Project Item and Project were not found by: ProjectFile='{ProjectFile}', Configuration='{ProjectConfiguration}, Platform='{ProjectPlatform}'.", projectFile, projectConfiguration, projectPlatform); } else { _logger.Warning("Project Item not found by: UniqueName='{UniqueName}', Configuration='{ProjectConfiguration}, Platform='{ProjectPlatform}'.", project.UniqueName, projectConfiguration, projectPlatform); } return(false); } } else { return(false); } projectEntry.ProjectItem = projectItem; return(true); }