Making TeamCity Version Match .NET Assembly Version

.net-assemblyteamcityversioning

Right now our assemblies have a version number like 2.0.831.0. As I understand it, that's major version, minor version, date and build number. If I make a change and build again on the same day it's 2.0.831.1, 2.0.831.2 etc.

My TeamCity build number format is simply 2.{0} where {0} is an auto incremented number that just goes on forever (2.195, 2.196 etc).

How do I make TeamCity look exactly like the assembly version? We want to be able to associate the Change Log with the assembly version so anyone can say assembly version 2.0.831.2 had these changes in these files.

Extra info:
Our build step uses the "Visual Studio (sln)" option instead of "MSBuild" if that matters.
We use Subversion for source control if that matters.
Our TeamCity version is 6.5.1 (build 17834).

Best Answer

I would recommend you to adopt the semantic versioning scheme {major}.{minor}.{patch} and append a 4th element for the build number {major}.{minor}.{patch}.{build}. This is way more useful as to include the build date into the versioning scheme.

TeamCity 6.5 (you haven't specified a version) has a build feature which could be used to patch the version in the AssemblyInfo.cs during the build. See the documentation for the AssemblyInfo Patcher.

AssemblyInfo patcher dialog (TeamCity documentation)

You could then define the build number format in the way you would like to have in your assembly and use the format for the build itself, as also for the patching feature.

Related Topic