docs
docs copied to clipboard
Is there ever a patch number in the SDK version number?
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
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
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:
latestMinorwould give me8.1.202latestFeaturewould give me8.0.401latestPatchwould give me8.0.301
Is that correct?
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...
latestPatchwould use8.0.301latestFeaturewould use8.0.400latestMinorwould use8.1.000latestMajorwould use9.0.000
I overlooked the absence of the dot between feature and patch. It now makes more sense to me. My apologies.