docs icon indicating copy to clipboard operation
docs copied to clipboard

Is there ever a patch number in the SDK version number?

Open petermorlion opened this issue 1 year ago • 2 comments
trafficstars

Type of issue

Typo

Description

The documentation of rollForward in the global.json mentions 4 levels of versioning:

  • major
  • minor
  • feature
  • patch

which maps to x.y.z.nn.

Yet there is, to my knowledge not a single SDK version with a patch (I checked the 3, 5, 6, 7, 8 and 9 majors). So is there or will there ever be a patch version? Could we at some time in the future see a (for example) 8.0.500.10 and a 8.0.500.11?

It would be nice to have an explanation on the policy of this.

The reason I ask is I have a customer that needs to always use a specific version of the .NET SDK. This is because they need their DLLs to be deterministically built, i.e. without a code change, the calculated hash of the DLL must be the same (for regulatory purposes).

So we pin our SDK in the global.json to 8.0.300 and set the rollForward property to latestPatch. But now I'm thinking that if there ever is a 8.0.300.1, that might produce a (binary) different DLL.

Page URL

https://learn.microsoft.com/en-us/dotnet/core/tools/global-json

Content source URL

https://github.com/dotnet/docs/blob/main/docs/core/tools/global-json.md

Document Version Independent Id

6d80613f-42dc-35d7-aeff-3187a36dbbca

Article author

@tdykstra

Metadata

  • ID: a94c335b-0b65-96cc-1c25-65777fbe4bb5
  • Service: dotnet-fundamentals

Related Issues

petermorlion avatar Oct 09 '24 14:10 petermorlion

Good catch! The versioning system did change for the SDK a while back and no, there wouldn't be a patch segment anymore. I think the examples got updated as time went on but he description didn't!

The last segment of the version is actually packed full of different information. To learn me, check out: https://learn.microsoft.com/en-us/dotnet/core/versions/#versioning-details

adegeo avatar Oct 11 '24 18:10 adegeo

Interesting! Then what is the effect on the global.json rollForward property? If I specify latestMinor, does it relate to the minor of the runtime or the minor of the SDK?

For example, if my global.json requests version 8.0.300 and I set rollForward to latestMinor, would it use 8.1.202 or 8.0.401 (assuming both existed)?

Or is that the difference between latestMinor and latestFeature, where minor points to the runtime and feature to the SDK? In that case, if I understand correctly:

  • latestMinor would give me 8.1.202
  • latestFeature would give me 8.0.401
  • latestPatch would give me 8.0.301

Is that correct?

petermorlion avatar Oct 14 '24 09:10 petermorlion

I've been revisiting this and either something changed or I misinterpreted the docs initially (most likely the latter :)

It seems the schema is x.y.znn, not x.y.z.nn. And there have been patches, for example 8.0.202 and 8.0.203.

So, for completeness, if we were to request 8.0.300...

  • latestPatch would use 8.0.301
  • latestFeature would use 8.0.400
  • latestMinor would use 8.1.000
  • latestMajor would use 9.0.000

I overlooked the absence of the dot between feature and patch. It now makes more sense to me. My apologies.

petermorlion avatar May 15 '25 09:05 petermorlion