Exemplo n.º 1
0
        public async Task <UpgradeReadiness> IsReadyAsync(IProject project, UpgradeReadinessOptions options, CancellationToken token)
        {
            if (project is null)
            {
                throw new ArgumentNullException(nameof(project));
            }

            if (options is null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            var components = await project.GetComponentsAsync(token).ConfigureAwait(false);

            if (options.IgnoreUnsupportedFeatures || !components.HasFlag(ProjectComponents.AspNet))
            {
                // this readiness check only applies to ASP.NET projects
                return(UpgradeReadiness.Ready);
            }

            // NOTE: class libraries containing custom controls are NOT expected to trigger this check
            // This ReadyCheck should highlight the technology in the "head" project.
            if (DoesProjectContainWebFormsFiles(project))
            {
                _logger.LogError(WEB_FORMS_MESSAGE);
                return(UpgradeReadiness.Unsupported);
            }

            return(UpgradeReadiness.Ready);
        }
Exemplo n.º 2
0
        public Task <UpgradeReadiness> IsReadyAsync(IProject project, UpgradeReadinessOptions options, CancellationToken token)
        {
            if (project is null)
            {
                throw new ArgumentNullException(nameof(project));
            }

            if (options is null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            if (options.IgnoreUnsupportedFeatures)
            {
                return(Task.FromResult(UpgradeReadiness.Ready));
            }

            // are there any svc.cs files in this project?
            if (project.FindFiles($".svc{GetExtensionForLanguage(project)}").Any())
            {
                _logger.LogError(WCF_MESSAGE);
                return(Task.FromResult(UpgradeReadiness.Unsupported));
            }

            return(Task.FromResult(UpgradeReadiness.Ready));
        }
        public async Task <UpgradeReadiness> IsReadyAsync(IProject project, UpgradeReadinessOptions options, CancellationToken token)
        {
            if (project is null)
            {
                throw new ArgumentNullException(nameof(project));
            }

            if (options is null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            if (options.IgnoreUnsupportedFeatures || project.Language != Language.VisualBasic)
            {
                // this readiness check only applies to Visual Basic projects
                return(UpgradeReadiness.Ready);
            }

            var components = await project.GetComponentsAsync(token).ConfigureAwait(false);

            if (!components.HasFlag(ProjectComponents.AspNet) && !components.HasFlag(ProjectComponents.AspNetCore))
            {
                // this readiness check only applies to ASP.NET projects
                return(UpgradeReadiness.Ready);
            }

            if (DoesProjectContainRazorFiles(project))
            {
                _logger.LogError(VBHTML_MESSAGE);
                return(UpgradeReadiness.Unsupported);
            }

            return(UpgradeReadiness.Ready);
        }
Exemplo n.º 4
0
        public async Task <UpgradeReadiness> IsReadyAsync(IProject project, UpgradeReadinessOptions options, CancellationToken token)
        {
            if (project is null)
            {
                throw new ArgumentNullException(nameof(project));
            }

            if (options is null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            var components = await project.GetComponentsAsync(token).ConfigureAwait(false);

            if (components.HasFlag(ProjectComponents.XamarinAndroid) || components.HasFlag(ProjectComponents.XamariniOS))
            {
                if (!DoesHaveMinimumXamarinVersion(project, _comparer))
                {
                    _logger.LogError(XAMARIN_FORMS_MESSAGE, CATEGORY, UPGRADE_LINK);
                    return(UpgradeReadiness.Unsupported);
                }
            }

            return(UpgradeReadiness.Ready);
        }
Exemplo n.º 5
0
        public async Task <UpgradeReadiness> IsReadyAsync(IProject project, UpgradeReadinessOptions options, CancellationToken token)
        {
            if (project is null)
            {
                throw new ArgumentNullException(nameof(project));
            }

            var tfms       = project.TargetFrameworks;
            var components = await project.GetComponentsAsync(token).ConfigureAwait(false);

            if (tfms.Count == 1)
            {
                _logger.LogTrace("Confirmed project {Project} has a valid TFM ({TFM})", project.FileInfo, tfms.First());
                return(UpgradeReadiness.Ready);
            }
            else
            {
                if (components.HasFlag(ProjectComponents.Maui))
                {
                    _logger.LogTrace("Confirmed project {Project} is of type .NET MAUI Head with TFMs : ({TFM}))", project.FileInfo, tfms.First());
                    return(UpgradeReadiness.NotReady);
                }
                else
                {
                    _logger.LogError("Project {Project} cannot be upgraded. Input projects must have exactly one target framework. Please see {FeatureLink} to request this feature.", project.FileInfo, FEATURE_LINK);
                    return(UpgradeReadiness.NotReady);
                }
            }
        }
Exemplo n.º 6
0
        public Task <UpgradeReadiness> IsReadyAsync(IProject project, UpgradeReadinessOptions options, CancellationToken token)
        {
            if (project is null)
            {
                throw new ArgumentNullException(nameof(project));
            }

            var projectRoot = project.GetFile();

            if (bool.TryParse(projectRoot.GetPropertyValue("EnableCentralPackageVersions"), out var result) && result)
            {
                _logger.LogError("Project {Name} uses EnableCentralPackageVersions which is not currently supported. Please see {FeatureLink} to request this feature.", project.FileInfo, FEATURE_LINK);
                return(Task.FromResult(UpgradeReadiness.NotReady));
            }
            else
            {
                return(Task.FromResult(UpgradeReadiness.Ready));
            }
        }
        public Task <UpgradeReadiness> IsReadyAsync(IProject project, UpgradeReadinessOptions options, CancellationToken token)
        {
            if (project is null)
            {
                throw new ArgumentNullException(nameof(project));
            }

            try
            {
                // Just need to access some values in the file to see if it can be properly loaded.
                _ = project.GetFile().GetPropertyValue("SomeValue");
                return(Task.FromResult(UpgradeReadiness.Ready));
            }
#pragma warning disable CA1031 // Do not catch general exception types
            catch (Exception e)
#pragma warning restore CA1031 // Do not catch general exception types
            {
                _logger.LogError("Project {File} cannot be loaded: {Message}", project.FileInfo, e.Message);
                return(Task.FromResult(UpgradeReadiness.NotReady));
            }
        }