Skip to content

Versioning Schema

Damian edited this page Jul 26, 2024 · 7 revisions

Prism.Avalonia Version Schema

Our package versions are based on the SemVer schema Major.Minor.Build.Revision using a hybrid between the Prism library, Avalonia projects, plus an incremental bump when provisioning.

Major[.Minor[.Build[.Revision]]]

Major.Minor.Build - Prism library
Revision - Avalonia + Prism.Avalonia

Because .NET's .revision segment uses Assembly Version Attribute, it is limited to a ushort value of 65535 (reference). Therefore, we cannot breakup Avalonia v11.2.13 into 110213 + our Rev 99 into 11021399 for our revisions. My goal is to match Prism's schema as much as possible.

Since Avalonia is rapidly updated, we reset our revisions back to 0 and can get by with a max of 9 revisions. 😄

Example

As an example, v8.1.97.11074

Prism v8.1.97 8.1.97
Avalonia v11.0.7 + .1107
Our Revision rev 4 + 4

Versioning Limitations

Trying to be compatible with 4 independent systems does have its limitations, where the 4th is NuGet. NuGet only allows for a maximum number value of USHORT (65K) per segment, versus the usual Assembly versionioning of UINT.

This means we can't use something cleaner such as, 9.0.401.11007xx-pre where xx is reserved for us.