/// <summary> /// Parse dependencies from the xelement and returns a list of PackageDependencySet /// </summary> /// <param name="dependenciesElement"></param> /// <returns></returns> private static List <PackageDependencySet> ReadDependencyList(XElement dependenciesElement) { // No elements so return empty list if (!dependenciesElement.HasElements) { return(new List <PackageDependencySet>()); } // Direct child of dependenciesElement with tag <group> var groups = dependenciesElement.ElementsNoNamespace("group"); // It is an error for <dependencies> element to contain both <dependency> and <group> child elements if (dependenciesElement.ElementsNoNamespace("dependency").Any() && groups.Any()) { throw new InvalidDataException(Messages.DependencyHasBothElements); } var dependencies = ReadDependencies(dependenciesElement); if (!groups.Any()) { // since there is no group, we are encoutering // old format, <dependency> is direct child of <dependencies> var dependencySet = new PackageDependencySet { Dependencies = dependencies }; return(new List <PackageDependencySet> { dependencySet }); } else { // new format, with <group> as child of <dependencies> // Project each group into a packagedependencyset return(groups.Select(group => new PackageDependencySet { TargetFramework = group.GetOptionalAttributeValue("targetFramework").SafeTrim(), Dependencies = ReadDependencies(group) }).ToList()); } }
/// <summary> /// Parse dependencies from the xelement and returns a list of PackageDependencySet /// </summary> /// <param name="dependenciesElement"></param> /// <returns></returns> private static List<PackageDependencySet> ReadDependencyList(XElement dependenciesElement) { // No elements so return empty list if (!dependenciesElement.HasElements) { return new List<PackageDependencySet>(); } // Direct child of dependenciesElement with tag <group> var groups = dependenciesElement.ElementsNoNamespace("group"); // It is an error for <dependencies> element to contain both <dependency> and <group> child elements if (dependenciesElement.ElementsNoNamespace("dependency").Any() && groups.Any()) { throw new InvalidDataException(Messages.DependencyHasBothElements); } var dependencies = ReadDependencies(dependenciesElement); if (!groups.Any()) { // since there is no group, we are encoutering // old format, <dependency> is direct child of <dependencies> var dependencySet = new PackageDependencySet { Dependencies = dependencies }; return new List<PackageDependencySet> { dependencySet }; } else { // new format, with <group> as child of <dependencies> // Project each group into a packagedependencyset return groups.Select(group => new PackageDependencySet { TargetFramework = group.GetOptionalAttributeValue("targetFramework").SafeTrim(), Dependencies = ReadDependencies(group) }).ToList(); } }