public async Task UpdateAsync(IEnumerable <NuGetProject> projects, IEnumerable <PackageIdentity> packages, bool shouldThrow, CancellationToken token) { MyProjectContext projectContext = new MyProjectContext(FileConflictAction.OverwriteAll) { ActionType = NuGetActionType.UpdateAll, PackageExtractionContext = _packageExtractionContext }; List <ProjectInstallActionSummaryModel> projectActionSummarys = new List <ProjectInstallActionSummaryModel>(); foreach (NuGetProject item in projects) { ProjectInstallActionSummaryModel summary = new ProjectInstallActionSummaryModel(item); await summary.LoadInstalledPackagesAsync(token); summary.UpdateFromPackageList(packages); projectActionSummarys.Add(summary); } var installProjects = projectActionSummarys.Where(t => t.NeedUpdate?.Any() == true); if (installProjects.Any()) { await UpdatePackagesInternalAsync(installProjects, projectContext, shouldThrow, token); } }
public async Task UninstallAsync(IEnumerable <NuGetProject> projects, IEnumerable <string> packages, bool removeDependencies, bool forceRemove, bool shouldThrow, CancellationToken token) { MyProjectContext projectContext = new MyProjectContext(FileConflictAction.OverwriteAll) { ActionType = NuGetActionType.Uninstall, PackageExtractionContext = _packageExtractionContext }; // sort packages // packages = SortPackagesWhenUninstallAsync(projects, packages); foreach (string packageId in packages) { var uninstallationContext = new UninstallationContext(removeDependencies, forceRemove); IReadOnlyList <ResolvedAction> actions = await GetActionsForUninstallAsync( uninstallationContext : uninstallationContext, targets : projects, packageId : packageId, projectContext : projectContext, token : token); if (actions.Count != 0) { PackageUninstalling?.Invoke(packageId); try { await ExecuteActionsAsync(actions, null, projectContext, NullSourceCacheContext.Instance, token); } catch (Exception ex) { Debug.WriteLine(ex); if (shouldThrow) { throw; } } finally { PackageUninstalled?.Invoke(packageId); } } } }