static List<string> GetPackageNamesInContentBranch(DependencyResolutionResult source, IEnumerable<IPackageInfo> allPackages) { var visitor = new PackageGraphVisitor(allPackages); var packagesInContent = allPackages.Select(x => x.Name).ToList(); var result = visitor.VisitFromLeafs((from, dep, to) => { // check if parent is in content branch already var parentInContentBranch = from != null && packagesInContent.Contains(from.Name, StringComparer.OrdinalIgnoreCase); if (parentInContentBranch == false && dep.ContentOnly == false) packagesInContent.Remove(to.Name); return true; }, source.Descriptor.Dependencies); return packagesInContent; }
public static IEnumerable <IPackageInfo> NotInContentBranch(this DependencyResolutionResult source) { var allPackages = source.SuccessfulPackages.Select(x => x.Packages.First()); return(NotInContentBranch(allPackages, source.Descriptor.Dependencies)); }