public static async Task <bool> IsNuGetProjectUpgradeableAsync(NuGetProject nuGetProject, Project envDTEProject = null) { ThreadHelper.ThrowIfNotOnUIThread(); if (nuGetProject == null && envDTEProject == null) { return(false); } if (nuGetProject == null) { var solutionManager = ServiceLocator.GetInstance <IVsSolutionManager>(); var projectSafeName = await EnvDTEProjectInfoUtility.GetCustomUniqueNameAsync(envDTEProject); nuGetProject = await solutionManager.GetNuGetProjectAsync(projectSafeName); if (nuGetProject == null) { return(false); } } if (!nuGetProject.ProjectServices.Capabilities.SupportsPackageReferences) { return(false); } var msBuildNuGetProject = nuGetProject as MSBuildNuGetProject; if (msBuildNuGetProject == null || !msBuildNuGetProject.PackagesConfigNuGetProject.PackagesConfigExists()) { return(false); } if (envDTEProject == null) { var vsmsBuildNuGetProjectSystem = msBuildNuGetProject.ProjectSystem as VsMSBuildProjectSystem; if (vsmsBuildNuGetProjectSystem == null) { return(false); } envDTEProject = vsmsBuildNuGetProjectSystem.VsProjectAdapter.Project; } if (!EnvDTEProjectUtility.IsSupported(envDTEProject)) { return(false); } var projectGuids = VsHierarchyUtility.GetProjectTypeGuids(envDTEProject); if (projectGuids.Any(t => UnupgradeableProjectTypes.Contains(t))) { return(false); } // Project is supported language, and not an unsupported type return(UpgradeableProjectTypes.Contains(envDTEProject.Kind) && projectGuids.All(projectTypeGuid => !SupportedProjectTypes.IsUnsupported(projectTypeGuid))); }
private void IgnoreUnsupportProjectReference(PackageSpec project) { foreach (var frameworkInfo in project.RestoreMetadata.TargetFrameworks) { var projectReferences = new List <ProjectRestoreReference>(); foreach (var projectReference in frameworkInfo.ProjectReferences) { if (SupportedProjectTypes.IsSupportedProjectExtension(projectReference.ProjectPath)) { projectReferences.Add(projectReference); } } frameworkInfo.ProjectReferences = projectReferences; } }