From 302a9e84f732ecac11cadc0cc5d635446a148cd7 Mon Sep 17 00:00:00 2001 From: David Fowler Date: Mon, 15 Feb 2016 20:57:49 -0800 Subject: [PATCH] This change mimics the nuget lock file generation logic --- .../Graph/LibraryRange.cs | 42 +++++++++++++++++++ .../Graph/LockFile.cs | 13 +----- 2 files changed, 44 insertions(+), 11 deletions(-) diff --git a/src/Microsoft.DotNet.ProjectModel/Graph/LibraryRange.cs b/src/Microsoft.DotNet.ProjectModel/Graph/LibraryRange.cs index 3e15c5a18..870cde381 100644 --- a/src/Microsoft.DotNet.ProjectModel/Graph/LibraryRange.cs +++ b/src/Microsoft.DotNet.ProjectModel/Graph/LibraryRange.cs @@ -104,6 +104,48 @@ namespace Microsoft.DotNet.ProjectModel.Graph return sb.ToString(); } + public string ToLockFileDependencyGroupString() + { + var sb = new StringBuilder(); + sb.Append(Name); + + if (VersionRange != null) + { + if (VersionRange.HasLowerBound) + { + sb.Append(" "); + + if (VersionRange.IsMinInclusive) + { + sb.Append(">= "); + } + else + { + sb.Append("> "); + } + + if (VersionRange.IsFloating) + { + sb.Append(VersionRange.Float.ToString()); + } + else + { + sb.Append(VersionRange.MinVersion.ToNormalizedString()); + } + } + + if (VersionRange.HasUpperBound) + { + sb.Append(" "); + + sb.Append(VersionRange.IsMaxInclusive ? "<= " : "< "); + sb.Append(VersionRange.MaxVersion.ToNormalizedString()); + } + } + + return sb.ToString(); + } + public bool HasFlag(LibraryDependencyTypeFlag flag) { return Type.HasFlag(flag); diff --git a/src/Microsoft.DotNet.ProjectModel/Graph/LockFile.cs b/src/Microsoft.DotNet.ProjectModel/Graph/LockFile.cs index 6872dbcd4..99e41df88 100644 --- a/src/Microsoft.DotNet.ProjectModel/Graph/LockFile.cs +++ b/src/Microsoft.DotNet.ProjectModel/Graph/LockFile.cs @@ -61,7 +61,7 @@ namespace Microsoft.DotNet.ProjectModel.Graph if (group.FrameworkName == null) { actualDependencies = project.Dependencies - .Select(RenderDependency) + .Select(d => d.ToLockFileDependencyGroupString()) .OrderBy(x => x, StringComparer.OrdinalIgnoreCase); } else @@ -74,7 +74,7 @@ namespace Microsoft.DotNet.ProjectModel.Graph } actualDependencies = framework.Dependencies - .Select(RenderDependency) + .Select(d => d.ToLockFileDependencyGroupString()) .OrderBy(x => x, StringComparer.OrdinalIgnoreCase); } @@ -87,14 +87,5 @@ namespace Microsoft.DotNet.ProjectModel.Graph message = null; return true; } - - private string RenderDependency(LibraryRange arg) - { - if (arg.Target == LibraryType.Project && arg.VersionRange == null) - { - return arg.Name; - } - return $"{arg.Name} {VersionUtility.RenderVersion(arg.VersionRange)}"; - } } } \ No newline at end of file