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); } } } } } }
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; }