Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
        }
Exemple #4
0
        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);
        }