Esempio n. 1
0
        GetReferencesTree(IInstalledPackage package, NuGetFramework targetFramework, IndentingLineWriter writer)
        {
            return(Impl((InstalledPackage)package));

            IEnumerable <(IInstalledPackage package, string reference)> Impl(InstalledPackage package_)
            {
                writer?.WriteLine(package_.ToString());

                var fxr = new FrameworkReducer();

                using (var par = package_.ReadArchive())
                {
                    var refs = par.GetReferenceItems().ToArray();
                    if (refs.Any())
                    {
                        var match = fxr.GetNearest(targetFramework, from r in refs select r.TargetFramework);
                        if (match != null)
                        {
                            foreach (var r in refs.Single(e => e.TargetFramework.Equals(match)).Items)
                            {
                                yield return(package_, package_.CombinePath(r.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar)));
                            }
                        }
                        else
                        {
                            yield return(package_, null);
                        }
                    }

                    var dependencies = par.GetPackageDependencies().ToArray();
                    if (dependencies.Any())
                    {
                        var match = fxr.GetNearest(targetFramework, from d in dependencies select d.TargetFramework);
                        if (match != null)
                        {
                            var dir     = LocalRepository.GetResource <DependencyInfoResource>();
                            var subrefs =
                                from d in dependencies.Single(e => e.TargetFramework.Equals(match)).Packages
                                select dir.ResolvePackages(d.Id, targetFramework, this, CancellationToken.None).Result
                                .Where(spdi => spdi.HasVersion && d.VersionRange.Satisfies(spdi.Version))
                                .DefaultIfEmpty()
                                .MinBy(sdpi => sdpi?.Version)
                                into dp
                                    where dp != null
                                from r in GetReferencesTree(FindInstalledPackage(dp.Id, dp.Version, dp.Version.IsPrerelease), targetFramework, writer?.Indent())
                                select r;

                            foreach (var r in subrefs)
                            {
                                yield return(r);
                            }
                        }
                    }
                }
            }
        }
Esempio n. 2
0
        public InstalledPackage(IPackage definition, bool isCompatible = true)
        {
            Mock <IInstalledPackage> mock = new Mock <IInstalledPackage>();

            mock
            .SetupGet(p => p.Definition)
            .Returns(definition);

            mock
            .SetupGet(p => p.IsCompatible)
            .Returns(isCompatible);

            Object = mock.Object;
        }