Skip to content

Commit 48c37d8

Browse files
re-add performance optimization (compressed flag replaced with hashing)
1 parent 7e53a50 commit 48c37d8

2 files changed

Lines changed: 27 additions & 10 deletions

File tree

src/NuGet.Core/NuGet.ProjectModel/DependencyGraphSpec.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ public void Save(string path)
286286
{
287287
jsonWriter.Formatting = Formatting.Indented;
288288

289-
Write(writer, PackageSpecWriter.Write);
289+
Write(writer, hashing: false, PackageSpecWriter.Write);
290290
}
291291
}
292292

@@ -295,12 +295,12 @@ public string GetHash()
295295
using (var hashFunc = new Sha512HashFunction())
296296
using (var writer = new HashObjectWriter(hashFunc))
297297
{
298-
Write(writer, PackageSpecWriter.Write);
298+
Write(writer, hashing: true, PackageSpecWriter.Write);
299299
return writer.GetHash();
300300
}
301301
}
302302

303-
private void Write(RuntimeModel.IObjectWriter writer, Action<PackageSpec, RuntimeModel.IObjectWriter> writeAction)
303+
private void Write(RuntimeModel.IObjectWriter writer, bool hashing, Action<PackageSpec, RuntimeModel.IObjectWriter, bool> writeAction)
304304
{
305305
writer.WriteObjectStart();
306306
writer.WriteNameValue("format", Version);
@@ -324,7 +324,7 @@ private void Write(RuntimeModel.IObjectWriter writer, Action<PackageSpec, Runtim
324324
var project = pair.Value;
325325

326326
writer.WriteObjectStart(project.RestoreMetadata.ProjectUniqueName);
327-
writeAction.Invoke(project, writer);
327+
writeAction.Invoke(project, writer, hashing);
328328
writer.WriteObjectEnd();
329329
}
330330

src/NuGet.Core/NuGet.ProjectModel/PackageSpecWriter.cs

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ public sealed class PackageSpecWriter
2929
/// <param name="packageSpec">A <c>PackageSpec</c> instance.</param>
3030
/// <param name="writer">An <c>NuGet.Common.IObjectWriter</c> instance.</param>
3131
public static void Write(PackageSpec packageSpec, IObjectWriter writer)
32+
{
33+
Write(packageSpec, writer, hashing: false);
34+
}
35+
36+
internal static void Write(PackageSpec packageSpec, IObjectWriter writer, bool hashing)
3237
{
3338
if (packageSpec == null)
3439
{
@@ -67,7 +72,7 @@ public static void Write(PackageSpec packageSpec, IObjectWriter writer)
6772
SetDependencies(writer, packageSpec.Dependencies);
6873
}
6974

70-
SetFrameworks(writer, packageSpec.TargetFrameworks);
75+
SetFrameworks(writer, packageSpec.TargetFrameworks, hashing);
7176

7277
JsonRuntimeFormat.WriteRuntimeGraph(writer, packageSpec.RuntimeGraph);
7378
}
@@ -533,7 +538,7 @@ private static void SetDownloadDependencies(IObjectWriter writer, IList<Download
533538
writer.WriteArrayEnd();
534539
}
535540

536-
private static void SetFrameworks(IObjectWriter writer, IList<TargetFrameworkInformation> frameworks)
541+
private static void SetFrameworks(IObjectWriter writer, IList<TargetFrameworkInformation> frameworks, bool hashing)
537542
{
538543
if (frameworks.Any())
539544
{
@@ -544,7 +549,7 @@ private static void SetFrameworks(IObjectWriter writer, IList<TargetFrameworkInf
544549
writer.WriteObjectStart(framework.FrameworkName.GetShortFolderName());
545550
SetValueIfNotNull(writer, "targetAlias", framework.TargetAlias);
546551
SetDependencies(writer, framework.Dependencies);
547-
SetCentralDependencies(writer, framework.CentralPackageVersions.Values);
552+
SetCentralDependencies(writer, framework.CentralPackageVersions.Values, hashing);
548553
SetImports(writer, framework.Imports);
549554
SetValueIfTrue(writer, "assetTargetFallback", framework.AssetTargetFallback);
550555
SetValueIfNotNull(writer, "secondaryFramework",
@@ -592,18 +597,30 @@ private static void SetFrameworkReferences(IObjectWriter writer, ISet<FrameworkD
592597
}
593598
}
594599

595-
private static void SetCentralDependencies(IObjectWriter writer, ICollection<CentralPackageVersion> centralPackageVersions)
600+
private static void SetCentralDependencies(IObjectWriter writer, ICollection<CentralPackageVersion> centralPackageVersions, bool hashing)
596601
{
597602
if (!centralPackageVersions.Any())
598603
{
599604
return;
600605
}
601606

602607
writer.WriteObjectStart("centralPackageVersions");
603-
foreach (var dependency in centralPackageVersions.OrderBy(dep => dep.Name))
608+
609+
if (hashing)
604610
{
605-
writer.WriteNameValue(name: dependency.Name, value: dependency.VersionRange.ToNormalizedString());
611+
foreach (var dependency in centralPackageVersions)
612+
{
613+
writer.WriteNameValue(name: dependency.Name, value: dependency.VersionRange.OriginalString ?? dependency.VersionRange.ToNormalizedString());
614+
}
606615
}
616+
else
617+
{
618+
foreach (var dependency in centralPackageVersions.OrderBy(dep => dep.Name))
619+
{
620+
writer.WriteNameValue(name: dependency.Name, value: dependency.VersionRange.ToNormalizedString());
621+
}
622+
}
623+
607624
writer.WriteObjectEnd();
608625
}
609626

0 commit comments

Comments
 (0)