private static IDictionary <string, PackageItem <T> > GroupItems <T>(IEnumerable <T> items, IDictionary <string, PackageItemDetail> packages) { var result = new SortedDictionary <string, PackageItem <T> >(); var otherPackage = new PackageItemDetail { Name = "Other", Assembly = string.Empty }; if (items != null) { foreach (var item in items) { PackageItemDetail package; if (!packages.TryGetValue(item.GetType().Assembly.FullName, out package)) { package = otherPackage; } PackageItem <T> entry; if (!result.TryGetValue(package.Assembly, out entry)) { entry = result[package.Assembly] = new PackageItem <T>(); entry.Package = package; } entry.Items.Add(item); } } return(result); }
private static IDictionary <string, PackageItemDetail> FindPackages() { var result = new Dictionary <string, PackageItemDetail>(); var packages = NuGetPackage.GetRegisteredPackages(); foreach (var package in packages) { var name = package.GetAssemblyName(); result[name] = new PackageItemDetail { Name = package.GetId(), Version = package.GetVersion(), Assembly = name }; } return(result); }