This is an excerpt from ASP.NET Core documentation on semantic versioning. The full document can be found here
The .NET Core Runtime roughly adheres to Semantic Versioning (SemVer), adopting the use of MAJOR.MINOR.PATCH
versioning, using the various parts of the version number to describe the degree and type of change.Copy
MAJOR.MINOR.PATCH[-PRERELEASE-BUILDNUMBER]
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.
Understand runtime version number changes
MAJOR
is incremented when:
- Significant changes occur to the product, or a new product direction.
- Breaking changes were taken. There’s a high bar to accepting breaking changes.
- An old version is no longer supported.
- A newer
MAJOR
version of an existing dependency is adopted.
MINOR
is incremented when:
- Public API surface area is added.
- A new behavior is added.
- A newer
MINOR
version of an existing dependency is adopted. - A new dependency is introduced.
PATCH
is incremented when:
- Bug fixes are made.
- Support for a newer platform is added.
- A newer
PATCH
version of an existing dependency is adopted. - Any other change doesn’t fit one of the previous cases.
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.