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); }
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); }
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); }
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); } } }
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)); } }