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