During my work on Software Development one of the issues I had to consider is a way of numbering different software releases. Below is a list of examples specifying different releases and their corresponding versions. Number in brackets corresponds to internal version of compiled assembly. Number before brackets displayed in About Box or Splash Screen for a user.
V1.0 RC1 (1.0.0.1) | This is a Release Candidate 1 or Beta Version 1 sent to testers |
V1.0 RC2 (1.0.0.2) | Testers found errors and development team released fixes in Release Candidate 2 |
V1.0 (1.0.0) | First Stable Release which deployed to production |
V1.0.1 RC1 (1.0.0.1) | Fixes made to production version sent to testers in Release Candidate 1 |
V1.0.1 RC2 (1.0.0.2) | Fixes made to errors found by testers and released in Release Candidate 2 |
V1.0.1 (1.0.1) | Version with fixes released to production |
V1.1 RC1 (1.1.0.1) | New features are introduced and sent to testers in Release Candidate 1 |
V1.1 RC2 (1.1.0.2) | Fixes made to errors found by testers and released in Release Candidate 2 |
V1.1 (1.1.0) | Stable Release with new features deployed to production |
And so on ....
Now you may notice a couple of unusual records. First, testing release start from 1.0.0.1 and second, stable release internal version has only 3 digits. For Windows Environment Variables Manager (EnvMan) I implemented a code that displays RCx wording depending on internal assembly version and so for it not to get confused about when to remove leading 0s Beta versions start from 1. See code sample below.
/// <summary> /// Gets the package version. /// </summary> /// <value>The package version.</value> public string PackageVersion { get { string VERSION_SEPERATOR = "."; Version version = Assembly.GetExecutingAssembly().GetName().Version; string build = (version.Build == 0) ? string.Empty : VERSION_SEPERATOR + version.Build; string revision = (version.Revision == 0) ? string.Empty : " RC" + version.Revision; string packageVersion = "V" + version.Major + VERSION_SEPERATOR + version.Minor + build + revision; return packageVersion; } }
Second unusual statement: For stable releases can be a problem when trying to install it on top of beta version. MSI Windows Installer may get confused between versions. I haven verified this yet, but it will be safer in this case to remove any Beta versions before installing production release.
I am happy to hear any feedback, please share your experience in the comments.