Auto-Incrementing Build Numbers (C# for VS.Net)
I finally got fed up with manually updating the build numbers in the AssemblyInfo.cs files. I needed an automated solution, so now I have one, even though it is definately more of a hack than good code.
To the point, I created a simple console app that I placed in my bin directory, and use a Pre-BuildEvent to call. (i.e. BuildNumberIncrementer “Path to a\AssemblyInfo.cs”).
The hack that is BuildNumberIncrementer goes like :
1: using System;
2: using System.IO;
3: using System.Text.RegularExpressions;
4:
5: namespace BuildNumberIncrementer { 6: class EntryPoint { 7: [STAThread]
8: static void Main(string[] args) { 9: if (args.Length != 1) { 10: Console.WriteLine("Please specify the 'AssemblyInfo.cs' you want to update."); 11: return;
12: }
13: string infoPath = args[0];
14:
15: if (!infoPath.EndsWith("AssemblyInfo.cs")) { 16: Console.WriteLine("Please specify the 'AssemblyInfo.cs' you want to update."); 17: return;
18: }
19:
20: if (!File.Exists(infoPath)) { 21: Console.WriteLine(infoPath + " does not exist.");
22: return;
23: }
24:
25: StreamReader reader = File.OpenText(infoPath);
26: string contents = reader.ReadToEnd();
27: reader.Close();
28: Regex version = new Regex(@"(\d+\.\d+\.\d+\.)(\d+)");
29: Match versionMatch = version.Match(contents);
30: string oldVersion = versionMatch.Value;
31: string newVersion = versionMatch.Groups[1].Value + (Convert.ToUInt32(versionMatch.Groups[2].Value) + 1).ToString();
32: contents = contents.Replace(oldVersion, newVersion);
33: StreamWriter writer = File.CreateText(infoPath);
34: writer.Write(contents);
35: writer.Close();
36:
37: Console.WriteLine(string.Format("New version is [{0}]", newVersion)); 38: }
39: }
40: }