Exemple #1
0
        private void Walk(INugetDependency package)
        {
            var dependencies = package.Package.DependencySets.FirstOrDefault()?.Dependencies;

            if (dependencies == null)
            {
                return;
            }

            Parallel.ForEach(dependencies, dependency =>
            {
                try
                {
                    IPackage subPackage = ResolveDependency(dependency);
                    var subDependency   = new NugetDependency(subPackage);
                    Walk(subDependency);
                    package.FoundDependencies.Add(subDependency);
                }
                catch (UnableToResolvePackageDependencyException e)
                {
                    Log.Error(e.Message);
                    package.UnresolvedDependencies.Add(dependency);
                }
                catch (UnableToRetrievePackageException e)
                {
                    Log.Error(e.Message);
                    package.UnresolvedDependencies.Add(dependency);
                }
                catch (ShortCircuitingResolveDependencyException e)
                {
                    Log.Error(e.Message);
                    package.UnresolvedDependencies.Add(dependency);
                }
            });
        }
        private static bool IsOfInterest(this INugetDependency package, ISolutionDependencyTree tree)
        {
            if (tree.Filter.Contains(package.Package.Id))
            {
                return(true);
            }

            return(package.FoundDependencies.Any(x => x.IsOfInterest(tree)));
        }