private void PerformPackageUpdates() { // UpdateAll if (!_idSpecified) { Dictionary <VsProject, List <PackageIdentity> > dictionary = GetInstalledPackagesForAllProjects(); foreach (KeyValuePair <VsProject, List <PackageIdentity> > entry in dictionary) { IEnumerable <VsProject> targetedProjects = new List <VsProject> { entry.Key }; List <PackageIdentity> identities = entry.Value; // Execute update for each of the project inside the solution foreach (PackageIdentity identity in identities) { // Find packages update PackageIdentity update = PowerShellPackage.GetLastestUpdateForPackage(ActiveSourceRepository, identity, entry.Key, IncludePrerelease.IsPresent, Safe.IsPresent); ExecuteSinglePackageAction(update, targetedProjects); } } } else { // Resolve package Id to be updated from the local repository PackageIdentity installedIdentity = new PackageIdentity(Id, null); Client.PackageRepositoryHelper.ResolvePackage(V2LocalRepository, installedIdentity, IncludePrerelease.IsPresent); Dictionary <VsProject, PackageIdentity> dictionary = GetInstalledPackageWithId(Id); // If package Id exists in Packages folder but is not actually installed to the current project, throw. if (dictionary.Count == 0) { WriteError(string.Format(VsResources.PackageNotInstalledInAnyProject, Id)); } foreach (KeyValuePair <VsProject, PackageIdentity> entry in dictionary) { IEnumerable <VsProject> targetedProjects = new List <VsProject> { entry.Key }; PackageIdentity identity = entry.Value; PackageIdentity update = null; // Find package update if (!string.IsNullOrEmpty(Version)) { NuGetVersion nVersion; if (IsVersionEnum) { nVersion = PowerShellPackage.GetUpdateVersionForDependentPackage(ActiveSourceRepository, identity, UpdateVersionEnum, entry.Key.GetSupportedFrameworks(), IncludePrerelease.IsPresent); } else { nVersion = PowerShellPackage.GetNuGetVersionFromString(Version); } if (nVersion != null) { PackageIdentity pIdentity = new PackageIdentity(Id, nVersion); update = Client.PackageRepositoryHelper.ResolvePackage(ActiveSourceRepository, V2LocalRepository, pIdentity, IncludePrerelease.IsPresent); } } else { update = PowerShellPackage.GetLastestUpdateForPackage(ActiveSourceRepository, identity, entry.Key, IncludePrerelease.IsPresent, Safe.IsPresent); if (update.Version <= identity.Version) { update = null; Log(MessageLevel.Info, Resources.Cmdlet_NoPackageUpdates); } } ExecuteSinglePackageAction(update, targetedProjects); } } }