private static IEnumerable <NuGet.Packaging.PackageDependencyGroup> ToNuGetPackageDependencyGroup( this IEnumerable <PackageDependency> packageDependency, NuGet.Frameworks.NuGetFramework framework) { var dependencies = new NuGet.Packaging.PackageDependencyGroup(framework, packageDependency.Select(p => p.ToNuGetPackageDependency())); return(dependencies.Packages.Any() ? new[] { dependencies } : new NuGet.Packaging.PackageDependencyGroup[0]); //return packageDependency // .GroupBy(dependency => dependency.Framework, dependency => dependency) // .Select(grupedDepenencies => new NuGet.Packaging.PackageDependencyGroup( // grupedDepenencies.Key, // grupedDepenencies.Select(dependency => dependency.ToNuGetPackageDependency()))); }
public PackageManifest GetManifest(PackageKey key, NuGet.Frameworks.NuGetFramework projectFramework) { Guard.NotNull(projectFramework, nameof(projectFramework)); var packageIdentity = new NuGet.Packaging.Core.PackageIdentity(key.PackageId, key.Version); var packagesResource = _sourceRepository.GetResource <PackageMetadataResource>(); var packageInfo = packagesResource.GetMetadataAsync(packageIdentity, NullSourceCacheContext.Instance, NullLogger.Instance, CancellationToken.None).Result; NuGet.Packaging.PackageDependencyGroup dependencies = null; if (packageInfo.DependencySets.Count() == 1 && packageInfo.DependencySets.First().TargetFramework.IsUnsupported) { dependencies = packageInfo.DependencySets.First(); } else if (packageInfo.DependencySets.Any()) { dependencies = NuGetFrameworkUtility.GetNearest(packageInfo.DependencySets, projectFramework); if (dependencies == null) { throw new ApplicationException($"Could not find compatible dependencies for '{packageInfo.Identity}' and framework '{projectFramework}'"); } } var manifest = new PackageManifest { PackageId = packageInfo.Identity.Id, Version = packageInfo.Identity.Version, Dependencies = new List <PackageDependency>() }; if (dependencies == null) { return(manifest); } foreach (var dependency in dependencies.Packages) { manifest.Dependencies.Add(new PackageDependency(dependency.Id, dependency.VersionRange)); } return(manifest); }