Beispiel #1
0
        /// <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();
            }
        }