You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/core/versions/index.md
+34-26Lines changed: 34 additions & 26 deletions
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@ title: .NET Core versioning
3
3
description: Understand how .NET Core versioning works.
4
4
author: bleroy
5
5
ms.author: mairaw
6
-
ms.date: 08/25/2017
6
+
ms.date: 02/13/2018
7
7
ms.topic: article
8
8
ms.prod: .net-core
9
9
ms.devlang: dotnet
@@ -19,9 +19,13 @@ This article aims at clarifying how the .NET Core SDK and runtime are versioned.
19
19
20
20
There are lots of moving parts that version independently in .NET Core. However, starting with .NET Core 2.0, there is an easy to understand top-level version number that everybody understands to be *the* version of ".NET Core" as a whole. The rest of this document goes into the details of the versioning of all those parts. These details can be important if you're a package manager, for example.
21
21
22
+
> [!IMPORTANT]
23
+
> The versioning details explained on this topic don't apply to the current version of the .NET Core SDK and runtime.
24
+
> The version scheme is changing in future releases. You can see the current proposal at the [dotnet/designs](https://github.com/dotnet/designs/pull/29) repository.
25
+
22
26
## Versioning details
23
27
24
-
Starting with .NET Core 2.0, downloads show a single version number in their file name. The following version numbers were unified:
28
+
With .NET Core 2.0, downloads show a single version number in their file name. The following version numbers were unified:
25
29
26
30
* The shared framework and associated runtime.
27
31
* The .NET Core SDK and associated .NET Core CLI.
@@ -31,8 +35,8 @@ The use of a single version number makes it easier for users to know what versio
31
35
32
36
### Installers
33
37
34
-
Starting with .NET Core 2.0, downloads for our[daily builds](https://github.com/dotnet/core-setup#daily-builds) and [our releases](https://www.microsoft.com/net/download/core) adhere to a new naming scheme that is easier to understand.
35
-
The installer UI in those downloads were also modified to clearly present the names and versions of the components being installed. In particular, titles now show the same version number that is in the download's file name.
38
+
With .NET Core 2.0, downloads for the[daily builds](https://github.com/dotnet/core-setup#daily-builds) and [releases](https://www.microsoft.com/net/download/core) adhere to a new naming scheme that is easier to understand.
39
+
The installer UI in those downloads was also modified to clearly present the names and versions of the components being installed. In particular, titles now show the same version number that is in the download's file name.
36
40
37
41
#### File name format
38
42
@@ -84,7 +88,7 @@ It's also possible that .NET Core Tools need to be updated, without runtime chan
84
88
#### Minimum package set
85
89
86
90
*`dotnet-runtime-[major].[minor]`: a runtime with the specified version (only the latest patch version for a given major+minor combination should be available in the package manager). New patch versions update the package, but new minor or major versions are separate packages.
87
-
91
+
88
92
**Dependencies**: `dotnet-host`
89
93
90
94
*`dotnet-sdk`: the latest SDK. `update` rolls forward major, minor, and patch versions.
@@ -114,7 +118,7 @@ A general Docker tag naming convention is to place the version number before the
114
118
115
119
The SDK tags should be updated to represent the SDK version rather than Runtime.
116
120
117
-
It's also possible that we need to fix the .NET Core Tools but reship an existing runtime. In that case, the SDK version is increased (for example, to 2.1.2) and then the Runtime catches up the next time it ships (for example, both the Runtime and SDK ship the following time as 2.1.3).
121
+
It's also possible that the .NET Core CLI tools (included in the SDK) are fixed but reship with an existing runtime. In that case, the SDK version is increased (for example, to 2.1.2), and then the Runtime catches up the next time it ships (for example, both the Runtime and SDK ship the following time as 2.1.3).
118
122
119
123
## Semantic Versioning
120
124
@@ -124,26 +128,29 @@ It's also possible that we need to fix the .NET Core Tools but reship an existin
124
128
MAJOR.MINOR.PATCH[-PRERELEASE-BUILDNUMBER]
125
129
```
126
130
127
-
The optional `PRERELEASE` and `BUILDNUMBER` parts will never be part of supported releases, and only exist on nightly builds, locally built from source targets, and unsupported preview releases.
131
+
The optional `PRERELEASE` and `BUILDNUMBER` parts are never part of supported releases and only exist on nightly builds, local builds from source targets, and unsupported preview releases.
128
132
129
133
### How version numbers are incremented?
130
134
131
135
`MAJOR` is incremented when:
132
-
- An old version is no longer supported.
133
-
- A newer `MAJOR` version of an existing dependency is adopted.
134
-
- The default setting of a compatibility quirk is changed to "off."
136
+
137
+
- An old version is no longer supported.
138
+
- A newer `MAJOR` version of an existing dependency is adopted.
139
+
- The default setting of a compatibility quirk is changed to "off."
135
140
136
141
`MINOR` is incremented when:
137
-
- Public API surface area is added.
138
-
- A new behavior is added.
139
-
- A newer `MINOR` version of an existing dependency is adopted.
140
-
- A new dependency is introduced.
141
-
142
+
143
+
- Public API surface area is added.
144
+
- A new behavior is added.
145
+
- A newer `MINOR` version of an existing dependency is adopted.
146
+
- A new dependency is introduced.
147
+
142
148
`PATCH` is incremented when:
143
-
- Bug fixes are made.
144
-
- Support for a newer platform is added.
145
-
- A newer `PATCH` version of an existing dependency is adopted.
146
-
- Any other change that doesn't fit one of the previous cases.
149
+
150
+
- Bug fixes are made.
151
+
- Support for a newer platform is added.
152
+
- A newer `PATCH` version of an existing dependency is adopted.
153
+
- Any other change doesn't fit one of the previous cases.
147
154
148
155
When there are multiple changes, the highest element affected by individual changes is incremented, and the following ones are reset to zero. For example, when `MAJOR` is incremented, `MINOR` and `PATCH` are reset to zero. When `MINOR` is incremented, `PATCH` is reset to zero while `MAJOR` is left untouched.
149
156
@@ -172,7 +179,7 @@ For more information, see [.NET Core Support Lifecycle Fact Sheet](https://www.m
172
179
173
180
.NET Core is made of the following parts:
174
181
175
-
- A host (also known as muxer): `dotnet.exe` with `hostfxr` policy libraries.
182
+
- A host: either *dotnet.exe* for framework-dependent applications, or *\<appname>.exe* for self-contained applications.
176
183
- An SDK (the set of tools necessary on a developer's machine, but not in production).
177
184
- A runtime.
178
185
- A shared framework implementation, distributed as packages. Each package is versioned independently, particularly for patch versioning.
@@ -200,7 +207,7 @@ Versioning for .NET Core metapackages is based on the .NET Core version they are
200
207
201
208
For instance, the metapackages in .NET Core 2.1.3 should all have 2.1 as their `MAJOR` and `MINOR` version numbers.
202
209
203
-
The patch version for the metapackage is incremented every time any referenced package is updated. Patch versions don't include an updated framework version. As a result, the metapackages aren't strictly SemVer-compliant because their versioning scheme doesn't represent the degree of change in the underlying packages, but primarily the API level.
210
+
The patch version for the metapackage is incremented every time any referenced package is updated. Patch versions don't include an updated framework version. As a result, the metapackages aren't strictly SemVer-compliant because their versioning scheme doesn't represent the degree of change in the underlying packages, but primarily of the API level.
204
211
205
212
There are currently two primary metapackages for .NET Core:
206
213
@@ -222,7 +229,7 @@ Target framework versions are updated when new APIs are added. They have no conc
222
229
223
230
## Versioning in practice
224
231
225
-
When you download .NET Core, the name of the file you download carries the version, for example, `dotnet-sdk-2.0.4-win10-x64.exe`.
232
+
When you download .NET Core, the name of the downloaded file carries the version, for example, `dotnet-sdk-2.0.4-win10-x64.exe`.
226
233
227
234
There are commits and pull requests on .NET Core repos on GitHub on a daily basis, resulting in new builds of many libraries. It isn't practical to create new public versions of .NET Core for every change. Instead, changes are aggregated over an undetermined period of time (for example, weeks or months) before making a new public stable .NET Core version.
228
235
@@ -247,7 +254,8 @@ Every time a new major version of .NET Core ships, the `MAJOR` version number ge
247
254
The various metapackages are updated to reference the updated .NET Core library packages. The [`Microsoft.NETCore.App`](https://www.nuget.org/packages/Microsoft.NETCore.App) metapackage and the `netcore` target framework are versioned as a major update matching the `MAJOR` version number of the new release.
248
255
249
256
## See also
250
-
[Target frameworks](../../standard/frameworks.md)
251
-
[.NET Core distribution packaging](../build/distribution-packaging.md)
252
-
[.NET Core Support Lifecycle Fact Sheet](https://www.microsoft.com/net/core/support)
253
-
[.NET Core 2+ Version Binding](https://github.com/dotnet/designs/issues/3)
257
+
258
+
[Target frameworks](../../standard/frameworks.md)
259
+
[.NET Core distribution packaging](../build/distribution-packaging.md)
260
+
[.NET Core Support Lifecycle Fact Sheet](https://www.microsoft.com/net/core/support)
261
+
[.NET Core 2+ Version Binding](https://github.com/dotnet/designs/issues/3)
0 commit comments