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); }
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()); }
public override string ToString() { return($"{ProjectName} {VersionRange.ToNormalizedString()}"); }
/// <summary> /// Id and Version range string /// </summary> public override string ToString() { return(String.Format(CultureInfo.InvariantCulture, "{0} {1}", Id, VersionRange.ToNormalizedString())); }
public void FloatingRange_ToStringMinor() { VersionRange range = VersionRange.Parse("1.*"); Assert.Equal("[1.*, )", range.ToNormalizedString()); }
public void FloatingRange_ToStringPrePrefix() { VersionRange range = VersionRange.Parse("1.0.0-alpha.*"); Assert.Equal("[1.0.0-alpha.*, )", range.ToNormalizedString()); }