Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

.Net AssemblyName.version Build versus Revision

The MSDN documentation states:

Version numbers consist of two to four components: major, minor, build, and revision. The major and minor components are required; the build and revision components are optional, but the build component is required if the revision component is defined. All defined components must be integers greater than or equal to 0.

The format of the version number is as follows (optional components are shown in square brackets ([ and ]): major.minor[.build[.revision]] The components are used by convention as follows:

  • Major: Assemblies with the same name but different major versions are not interchangeable. A higher version number might indicate a major rewrite of a product where backward compatibility cannot be assumed.

  • Minor: If the name and major version number on two assemblies are the same, but the minor version number is different, this indicates significant enhancement with the intention of backward compatibility. This higher minor version number might indicate a point release of a product or a fully backward-compatible new version of a product.

  • Build: A difference in build number represents a recompilation of the same source. Different build numbers might be used when the processor, platform, or compiler changes.

  • Revision: Assemblies with the same name, major, and minor version numbers but different revisions are intended to be fully interchangeable. A higher revision number might be used in a build that fixes a security hole in a previously released assembly.

Subsequent versions of an assembly that differ only by build or revision numbers are considered to be Hotfix updates of the prior version.

My question is concerning the meaning of the terms Build and Revision in this context.

It seems to me that in general parlance, we do "builds" when there are changes in the source. Thus "build 678" and "build 679" are different precisely because the sources are different in some way - typically as a result of a checkin of some changed source. It seems to me that the .NET definition uses "Revision" in the way one generally uses "build".

Does anybody USE the definition above in their versioning? If so can you give concrete examples of WHY you did?

like image 977
PaoloFCantoni Avatar asked Jul 19 '10 07:07

PaoloFCantoni


People also ask

What is the difference between assembly version and assembly file version?

AssemblyVersion: Specifies the version of the assembly being attributed. AssemblyFileVersion: Instructs a compiler to use a specific version number for the Win32 file version resource.

What is net revision?

. NET Revision Tool is a small developer's tool that prints out the current Git or SVN revision info of a working directory. It can automatically write that revision information into your application's code so that it's compiled right into it.

What is Major Minor build revision?

This “MAJOR. minor. revision-build” is the way PKP uses to name a version and is a variant of something called “Semantic versioning”. To make it clear, let's take some real examples and see how they look like: Version tag.

What is the order of an assembly version?

The AssemblyVersion attribute assigns the version number of the assembly, and this is embedded in the manifest. Version information for an assembly consists of the following four values : a major and minor version number, and two further optional build and revision numbers.


2 Answers

Subsequent versions of an assembly that differ only by build or revision numbers are considered to be Hotfix updates of the prior version.

This section explains the difference. The Revision is used when your product has shipped and you need to make fixes to a shipped version while you are already progressing with updates.

For example 1.1.10.0 ships. I am making small changes to functionality and am at 1.1.20.0 when I get a security alert that needs fixing. I can't increment 1.1.10.0 to 1.1.11.0, as that represents something else. So I use 1.1.10.1 to identify it is a revision of the 1.1.10.0 code.

Hope this is a little clearer than mud. Also remember the size of the company and the size of the software projects they ship that came up with these definitions.

like image 167
btlog Avatar answered Oct 04 '22 03:10

btlog


I agree with you totally here. The given descriptions don't make a great deal of sense unless you interpret them with a pinch of salt. For me, the last of the version numbers should mean build, i.e. the number that gets updated on each compilation. The other numbers represent differing degrees of change to the software/API.

In practice, this is how the version numbers typically get used. (Certainly, how I use them.)

  • Major - increased when the feature set/API of the software changes significantly

  • Minor - increased when notable changes are made, minor API changes or addition of new functionality

  • Build - increased when minor changes are made, typically bug fixes and improvements (though no API changes)

  • Revision - a unique ID/number that represents the build instance

like image 31
Noldorin Avatar answered Oct 04 '22 05:10

Noldorin