protected Dictionary <VsProject, IEnumerable <JObject> > GetPackageUpdatesFromRemoteSource(string filter, bool allowPrerelease, int skip, int take, bool allVersions) { IEnumerable <VsProject> targets = GetProjects(); Dictionary <VsProject, IEnumerable <JObject> > packageUpdates = new Dictionary <VsProject, IEnumerable <JObject> >(); foreach (VsProject project in targets) { Task <IEnumerable <JObject> > task = project.InstalledPackages.GetAllInstalledPackagesAndMetadata(); IEnumerable <JObject> installedJObjects = task.Result; List <JObject> filteredUpdates = new List <JObject>(); foreach (JObject jObject in installedJObjects) { // Find packages update List <JObject> updates = PowerShellPackage.GetLastestJObjectsForPackage(ActiveSourceRepository, jObject, project, allowPrerelease, skip, take, allVersions); NuGetVersion originalVersion = PowerShellPackage.GetNuGetVersionFromString(jObject.Value <string>(Properties.Version)); if (!string.IsNullOrEmpty(filter)) { updates = updates.Where(p => p.Value <string>(Properties.PackageId).StartsWith(filter, StringComparison.OrdinalIgnoreCase)).ToList(); } filteredUpdates.AddRange(updates); } packageUpdates.Add(project, filteredUpdates); } return(packageUpdates); }