protected async Task InstallPackageByIdAsync( NuGetProject project, string packageId, ResolutionContext resolutionContext, INuGetProjectContext projectContext, bool isPreview) { try { var packageManager = ConsoleHost.CreatePackageManager(); var latestVersion = await packageManager.GetLatestVersionAsync( packageId, project, resolutionContext, PrimarySourceRepositories, new LoggerAdapter (projectContext), ConsoleHost.Token); if (latestVersion == null) { throw new InvalidOperationException(GettextCatalog.GetString("Unable to find package '{0}", packageId)); } var identity = new PackageIdentity(Id, latestVersion.LatestVersion); var actions = await packageManager.PreviewInstallPackageAsync( project, identity, resolutionContext, projectContext, PrimarySourceRepositories, null, CancellationToken.None); if (isPreview) { PreviewNuGetPackageActions(actions); } else { NuGetPackageManager.SetDirectInstall(identity, projectContext); await packageManager.ExecuteNuGetProjectActionsAsync(project, actions, this, ConsoleHost.Token); NuGetPackageManager.ClearDirectInstall(projectContext); } } catch (InvalidOperationException ex) { if (ex.InnerException is PackageAlreadyInstalledException) { Log(ProjectManagement.MessageLevel.Info, ex.Message); } else { throw ex; } } }
async Task PreviewAndExecuteUpdateActionsforAllPackages(NuGetProject project) { var packageManager = ConsoleHost.CreatePackageManager(); var actions = await packageManager.PreviewUpdatePackagesAsync( project, CreateResolutionContext(), this, PrimarySourceRepositories, PrimarySourceRepositories, ConsoleHost.Token); await ExecuteActions(project, actions, packageManager); }
protected async Task InstallPackageByIdentityAsync( NuGetProject project, PackageIdentity identity, ResolutionContext resolutionContext, INuGetProjectContext projectContext, bool isPreview) { try { var packageManager = ConsoleHost.CreatePackageManager(); var actions = await packageManager.PreviewInstallPackageAsync( project, identity, resolutionContext, projectContext, PrimarySourceRepositories, null, ConsoleHost.Token); if (isPreview) { PreviewNuGetPackageActions(actions); } else { NuGetPackageManager.SetDirectInstall(identity, projectContext); await packageManager.ExecuteNuGetProjectActionsAsync( project, actions, this, resolutionContext.SourceCacheContext, ConsoleHost.Token); NuGetPackageManager.ClearDirectInstall(projectContext); } } catch (InvalidOperationException ex) { if (ex.InnerException is PackageAlreadyInstalledException) { Log(ProjectManagement.MessageLevel.Info, ex.Message); } else { throw ex; } } }
protected async Task UninstallPackageByIdAsync( NuGetProject project, string packageId, UninstallationContext uninstallContext, INuGetProjectContext projectContext, bool isPreview) { ConsoleHostNuGetPackageManager packageManager = ConsoleHost.CreatePackageManager(); IEnumerable <NuGetProjectAction> actions = await packageManager.PreviewUninstallPackageAsync(project, packageId, uninstallContext, projectContext, ConsoleHost.Token); if (isPreview) { PreviewNuGetPackageActions(actions); } else { await packageManager.ExecuteNuGetProjectActionsAsync(project, actions, projectContext, ConsoleHost.Token); } }
async Task PreviewAndExecuteUpdateActionsforSinglePackage(NuGetProject project) { ConsoleHostNuGetPackageManager packageManager = null; var installedPackage = (await project.GetInstalledPackagesAsync(ConsoleHost.Token)) .FirstOrDefault(p => string.Equals(p.PackageIdentity.Id, Id, StringComparison.OrdinalIgnoreCase)); if (installedPackage != null) { // set _installed to true, if package to update is installed. isPackageInstalled = true; packageManager = ConsoleHost.CreatePackageManager(); var actions = Enumerable.Empty <NuGetProjectAction> (); var resolutionContext = CreateResolutionContext(); // If -Version switch is specified if (!string.IsNullOrEmpty(Version)) { actions = await packageManager.PreviewUpdatePackagesAsync( new PackageIdentity (installedPackage.PackageIdentity.Id, PowerShellCmdletsUtility.GetNuGetVersionFromString(Version)), project, resolutionContext, this, PrimarySourceRepositories, EnabledSourceRepositories, ConsoleHost.Token); } else { actions = await packageManager.PreviewUpdatePackagesAsync( installedPackage.PackageIdentity.Id, project, resolutionContext, this, PrimarySourceRepositories, EnabledSourceRepositories, ConsoleHost.Token); } await ExecuteActions(project, actions, packageManager, resolutionContext.SourceCacheContext); } }
async Task ExecuteInitScriptsAsync() { var projects = ConsoleHost.GetNuGetProjects().ToList(); var packageManager = ConsoleHost.CreatePackageManager(); var packagesByFramework = new Dictionary <NuGetFramework, HashSet <PackageIdentity> > (); var sortedGlobalPackages = new List <PackageIdentity>(); foreach (var project in projects) { var buildIntegratedProject = project as BuildIntegratedNuGetProject; if (buildIntegratedProject != null) { var packages = await BuildIntegratedProjectUtility .GetOrderedProjectPackageDependencies(buildIntegratedProject); sortedGlobalPackages.AddRange(packages); } else { // Read packages.config var installedRefs = await project.GetInstalledPackagesAsync(CancellationToken.None); if (installedRefs?.Any() == true) { // Index packages.config references by target framework since this affects dependencies NuGetFramework targetFramework; if (!project.TryGetMetadata(NuGetProjectMetadataKeys.TargetFramework, out targetFramework)) { targetFramework = NuGetFramework.AnyFramework; } HashSet <PackageIdentity> fwPackages; if (!packagesByFramework.TryGetValue(targetFramework, out fwPackages)) { fwPackages = new HashSet <PackageIdentity> (); packagesByFramework.Add(targetFramework, fwPackages); } fwPackages.UnionWith(installedRefs.Select(reference => reference.PackageIdentity)); } } } // Each id/version should only be executed once var finishedPackages = new HashSet <PackageIdentity>(); // Packages.config projects if (packagesByFramework.Count > 0) { await ExecuteInitPs1ForPackagesConfig( packageManager, packagesByFramework, finishedPackages); } // build integrated projects if (sortedGlobalPackages.Count > 0) { ExecuteInitPs1ForBuildIntegrated( sortedGlobalPackages, finishedPackages); } }