@@ -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