C# – .Net AssemblyName.version Build versus Revision

build-processcnetversioning

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?

Best Answer

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.

Related Topic