コード例 #1
0
        private static List <PackageDependencyGroup> ReadDependencyGroups(XElement dependenciesElement)
        {
            if (!dependenciesElement.HasElements)
            {
                return(new List <PackageDependencyGroup>());
            }

            // Disallow the <dependencies> element to contain both <dependency> and
            // <group> child elements. Unfortunately, this cannot be enforced by XSD.
            if (dependenciesElement.ElementsNoNamespace("dependency").Any() &&
                dependenciesElement.ElementsNoNamespace("group").Any())
            {
                throw new InvalidDataException(NuGetResources.Manifest_DependenciesHasMixedElements);
            }

            var dependencies = ReadDependencies(dependenciesElement);

            if (dependencies.Any())
            {
                // old format, <dependency> is direct child of <dependencies>
                var dependencyGroup = new PackageDependencyGroup(NuGetFramework.AnyFramework, dependencies);
                return(new List <PackageDependencyGroup> {
                    dependencyGroup
                });
            }
            else
            {
                var groups = dependenciesElement.ElementsNoNamespace("group");

                return(groups.Select(element =>
                {
                    var targetFrameworkName = element.GetOptionalAttributeValue("targetFramework")?.Trim();
                    NuGetFramework targetFramework = null;

                    if (targetFrameworkName != null)
                    {
                        targetFramework = NuGetFramework.Parse(targetFrameworkName);

                        if (targetFramework.IsUnsupported)
                        {
                            throw new InvalidDataException(string.Format(CultureInfo.CurrentCulture, Strings.Error_InvalidTargetFramework, targetFrameworkName));
                        }
                    }

                    // REVIEW: Is UnsupportedFramework correct?
                    targetFramework = targetFramework ?? NuGetFramework.UnsupportedFramework;

                    return new PackageDependencyGroup(
                        targetFramework,
                        ReadDependencies(element));
                }).ToList());
            }
        }
コード例 #2
0
        private static PackageDependencyGroup CreatePackageDependencyGroup(PackageDependencyGroup dependencyGroup)
        {
            IEnumerable <PackageDependency> dependencies;

            if (dependencyGroup.Packages == null)
            {
                dependencies = Enumerable.Empty <PackageDependency>();
            }
            else
            {
                dependencies = dependencyGroup.Packages.Select(dependency =>
                                                               new PackageDependency(
                                                                   dependency.Id.SafeTrim(),
                                                                   dependency.VersionRange,
                                                                   dependency.Include,
                                                                   dependency.Exclude)).ToList();
            }

            return(new PackageDependencyGroup(dependencyGroup.TargetFramework, dependencies));
        }
コード例 #3
0
        private static PackageDependencyGroup CreatePackageDependencyGroup(PackageDependencyGroup dependencyGroup)
        {
            ISet <PackageDependency> dependencies;

            if (dependencyGroup.Packages == null)
            {
                dependencies = new HashSet <PackageDependency>();
            }
            else
            {
                var dependenciesList = dependencyGroup.Packages.Select(dependency =>
                                                                       new PackageDependency(
                                                                           dependency.Id.SafeTrim(),
                                                                           dependency.VersionRange,
                                                                           dependency.Include,
                                                                           dependency.Exclude)).ToList();
                dependencies = new HashSet <PackageDependency>(dependenciesList);
            }

            return(new PackageDependencyGroup(dependencyGroup.TargetFramework, dependencies));
        }