Ejemplo n.º 1
0
        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())));
        }
Ejemplo n.º 2
0
        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);
        }