public async Task UpgradeNuGetProjectAsync(INuGetUI uiService, NuGetProject nuGetProject) { var context = uiService.UIContext; // Restore the project before proceeding var solutionDirectory = context.SolutionManager.SolutionDirectory; await context.PackageRestoreManager.RestoreMissingPackagesInSolutionAsync(solutionDirectory, uiService.ProjectContext, CancellationToken.None); var packagesDependencyInfo = await context.PackageManager.GetInstalledPackagesDependencyInfo(nuGetProject, CancellationToken.None, includeUnresolved : true); var upgradeInformationWindowModel = new NuGetProjectUpgradeWindowModel(nuGetProject, packagesDependencyInfo.ToList()); var result = uiService.ShowNuGetUpgradeWindow(upgradeInformationWindowModel); if (!result) { // raise upgrade telemetry event with Cancelled status var packagesCount = upgradeInformationWindowModel.UpgradeDependencyItems.Count; var upgradeTelemetryEvent = VSTelemetryServiceUtility.GetUpgradeTelemetryEvent( uiService.Projects, NuGetOperationStatus.Cancelled, packagesCount); TelemetryActivity.EmitTelemetryEvent(upgradeTelemetryEvent); return; } var progressDialogData = new ProgressDialogData(Resources.NuGetUpgrade_WaitMessage); string backupPath; using (var progressDialogSession = context.StartModalProgressDialog(Resources.WindowTitle_NuGetMigrator, progressDialogData, uiService)) { backupPath = await PackagesConfigToPackageReferenceMigrator.DoUpgradeAsync( context, uiService, nuGetProject, upgradeInformationWindowModel.UpgradeDependencyItems, upgradeInformationWindowModel.NotFoundPackages, progressDialogSession.Progress, progressDialogSession.UserCancellationToken); } if (!string.IsNullOrEmpty(backupPath)) { var htmlLogFile = GenerateUpgradeReport(nuGetProject, backupPath, upgradeInformationWindowModel); Process process = null; try { process = Process.Start(htmlLogFile); } catch { } } }
public bool ShowNuGetUpgradeWindow(NuGetProjectUpgradeWindowModel nuGetProjectUpgradeWindowModel) { var result = false; InvokeOnUIThread(() => { var upgradeInformationWindow = new NuGetProjectUpgradeWindow(nuGetProjectUpgradeWindowModel); result = upgradeInformationWindow.ShowModal() == true; }); return result; }
public bool ShowNuGetUpgradeWindow(NuGetProjectUpgradeWindowModel nuGetProjectUpgradeWindowModel) { var result = false; UIDispatcher.Invoke(() => { var upgradeInformationWindow = new NuGetProjectUpgradeWindow(nuGetProjectUpgradeWindowModel); result = upgradeInformationWindow.ShowModal() == true; }); return(result); }
public NuGetProjectUpgradeWindow(NuGetProjectUpgradeWindowModel model) { DataContext = model; InitializeComponent(); }
private static string GenerateUpgradeReport(NuGetProject nuGetProject, string backupPath, NuGetProjectUpgradeWindowModel upgradeInformationWindowModel) { var projectName = NuGetProject.GetUniqueNameOrName(nuGetProject); using (var upgradeLogger = new UpgradeLogger(projectName, backupPath)) { var installedAsTopLevel = upgradeInformationWindowModel.UpgradeDependencyItems.Where(t => t.InstallAsTopLevel); var transitiveDependencies = upgradeInformationWindowModel.TransitiveDependencies.Where(t => !t.InstallAsTopLevel); foreach (var package in installedAsTopLevel) { upgradeLogger.RegisterPackage(projectName, package.Id, package.Version, package.Issues, true); } foreach (var package in transitiveDependencies) { upgradeLogger.RegisterPackage(projectName, package.Id, package.Version, package.Issues, false); } return(upgradeLogger.GetHtmlFilePath()); } }
public async Task UpgradeNuGetProjectAsync(INuGetUI uiService, IProjectContextInfo project) { Assumes.NotNull(uiService); Assumes.NotNull(project); INuGetUIContext context = uiService.UIContext; // Restore the project before proceeding string solutionDirectory = await context.SolutionManagerService.GetSolutionDirectoryAsync(CancellationToken.None); await context.PackageRestoreManager.RestoreMissingPackagesInSolutionAsync( solutionDirectory, uiService.ProjectContext, new LoggerAdapter(uiService.ProjectContext), CancellationToken.None); IServiceBroker serviceBroker = context.ServiceBroker; NuGetProjectUpgradeWindowModel upgradeInformationWindowModel; using (INuGetProjectManagerService projectManager = await serviceBroker.GetProxyAsync <INuGetProjectManagerService>( NuGetServices.ProjectManagerService, CancellationToken.None)) { Assumes.NotNull(projectManager); IReadOnlyCollection <PackageDependencyInfo> packagesDependencyInfo = await projectManager.GetInstalledPackagesDependencyInfoAsync( project.ProjectId, includeUnresolved : true, CancellationToken.None); upgradeInformationWindowModel = await NuGetProjectUpgradeWindowModel.CreateAsync( serviceBroker, project, packagesDependencyInfo.ToList(), CancellationToken.None); } var result = uiService.ShowNuGetUpgradeWindow(upgradeInformationWindowModel); if (!result) { // raise upgrade telemetry event with Cancelled status var packagesCount = upgradeInformationWindowModel.UpgradeDependencyItems.Count; var upgradeTelemetryEvent = new UpgradeInformationTelemetryEvent(); IEnumerable <string> projectIds = await ProjectUtility.GetSortedProjectIdsAsync( uiService.UIContext.ServiceBroker, uiService.Projects, CancellationToken.None); upgradeTelemetryEvent.SetResult( projectIds, NuGetOperationStatus.Cancelled, packagesCount); TelemetryActivity.EmitTelemetryEvent(upgradeTelemetryEvent); return; } var progressDialogData = new ProgressDialogData(Resources.NuGetUpgrade_WaitMessage); string projectName = await project.GetUniqueNameOrNameAsync( uiService.UIContext.ServiceBroker, CancellationToken.None); string backupPath; var windowTitle = string.Format( CultureInfo.CurrentCulture, Resources.WindowTitle_NuGetMigrator, projectName); using (IModalProgressDialogSession progressDialogSession = await context.StartModalProgressDialogAsync(windowTitle, progressDialogData, uiService)) { backupPath = await PackagesConfigToPackageReferenceMigrator.DoUpgradeAsync( context, uiService, project, upgradeInformationWindowModel.UpgradeDependencyItems, upgradeInformationWindowModel.NotFoundPackages, progressDialogSession.Progress, progressDialogSession.UserCancellationToken); } if (!string.IsNullOrEmpty(backupPath)) { string htmlLogFile = GenerateUpgradeReport(projectName, backupPath, upgradeInformationWindowModel); Process process = null; try { process = Process.Start(htmlLogFile); } catch { } } }