Пример #1
0
        private static void UpdateDependencies(Dictionary <string, PackageInfo> packages, bool release)
        {
            var errors = new List <Exception>();

            foreach (var package in packages.Values)
            {
                var dependencies = package.SpecificationXml.
                                   Element(XName.Get("package", package.NuspecXmlns))?.
                                   Element(XName.Get("metadata", package.NuspecXmlns))?.
                                   Element(XName.Get("dependencies", package.NuspecXmlns))?.
                                   Descendants(XName.Get("dependency", package.NuspecXmlns)) ?? Array.Empty <XElement>();

                foreach (var dependency in dependencies)
                {
                    string id = dependency.Attribute("id")?.Value;
                    if (id == null)
                    {
                        throw new InvalidDataException($"'{package.Id}' has invalid format: element 'dependency' is missing 'id' attribute");
                    }

                    var versionRangeAttribute = dependency.Attribute("version");
                    if (versionRangeAttribute == null)
                    {
                        throw new InvalidDataException($"'{package.Id}' has invalid format: element 'dependency' is missing 'version' attribute");
                    }

                    if (!VersionRange.TryParse(versionRangeAttribute.Value, out var versionRange))
                    {
                        throw new InvalidDataException($"'{id}' has invalid version range: '{versionRangeAttribute.Value}'");
                    }

                    if (packages.TryGetValue(id, out var dependentPackage))
                    {
                        if (versionRange.IsFloating ||
                            versionRange.HasLowerAndUpperBounds && versionRange.MinVersion != versionRange.MaxVersion)
                        {
                            throw new InvalidDataException($"Unexpected dependency version range: '{id}, {versionRangeAttribute.Value}'");
                        }

                        var newVersion = ToNuGetVersion(dependentPackage.NewVersion);

                        var newRange = new VersionRange(
                            versionRange.HasLowerBound ? newVersion : null,
                            versionRange.IsMinInclusive,
                            versionRange.HasUpperBound ? newVersion : null,
                            versionRange.IsMaxInclusive);

                        versionRangeAttribute.SetValue(newRange.ToNormalizedString());
                    }
                    else if (release && (versionRange.MinVersion?.IsPrerelease == true || versionRange.MaxVersion?.IsPrerelease == true))
                    {
                        errors.Add(new InvalidOperationException($"Package '{package.Id}' depends on a pre-release package '{id}, {versionRangeAttribute.Value}'"));
                    }
                }
            }

            ThrowExceptions(errors);
        }
Пример #2
0
            public RegistrationPageInfo(RegistrationPage page)
            {
                Page  = page;
                Range = new VersionRange(
                    minVersion: NuGetVersion.Parse(page.Lower),
                    includeMinVersion: true,
                    maxVersion: NuGetVersion.Parse(page.Upper),
                    includeMaxVersion: true);
                RangeString = Range.ToNormalizedString();

                // When the items are inlined, we don't need to make a network request to get the metadata.
                if (page.Items != null)
                {
                    SetVersionToItem(page.Items);
                }
            }
 public static string GetUniqueName(string id, string framework, VersionRange versionRange)
 {
     return($"{id}-{framework}-{versionRange.ToNormalizedString()}".ToLowerInvariant());
 }
Пример #4
0
 public override string ToString()
 {
     return($"{ProjectName} {VersionRange.ToNormalizedString()}");
 }
Пример #5
0
 /// <summary>
 /// Id and Version range string
 /// </summary>
 public override string ToString()
 {
     return(String.Format(CultureInfo.InvariantCulture, "{0} {1}", Id, VersionRange.ToNormalizedString()));
 }
Пример #6
0
        public void FloatingRange_ToStringMinor()
        {
            VersionRange range = VersionRange.Parse("1.*");

            Assert.Equal("[1.*, )", range.ToNormalizedString());
        }
Пример #7
0
        public void FloatingRange_ToStringPrePrefix()
        {
            VersionRange range = VersionRange.Parse("1.0.0-alpha.*");

            Assert.Equal("[1.0.0-alpha.*, )", range.ToNormalizedString());
        }