dotnet / docs

This repository contains .NET Documentation.
https://learn.microsoft.com/dotnet
Creative Commons Attribution 4.0 International
4.27k stars 5.89k forks source link

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

Open petermorlion opened 2 weeks ago

petermorlion commented 2 weeks ago

Type of issue

Typo

Description

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

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

Related Issues

adegeo commented 2 weeks ago

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

petermorlion commented 2 weeks ago

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:

Is that correct?