アセンブリのバージョンのbuildとrevisionについて
using System;
using System.Reflection;
namespace ShowAsmVersion
{
class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
var asm2 = Assembly.ReflectionOnlyLoad("TestLib");
Console.WriteLine(asm2);
//var asm = typeof(TestLib.MyClass).Assembly;
var ver = asm2.GetName().Version;
Console.WriteLine("{0}-{1}-{2}-{3}", ver.Major, ver.Minor, ver.Build, ver.Revision);
// Buildに設定されているのは、2000年1月1日からの経過日数
var baseDate = new DateTime(2000, 1, 1);
var d1 = baseDate.AddDays(ver.Build);
Console.WriteLine(d1);
// Revisionに設定されているのは、0時からの経過秒数を2で割った値
// 時間に戻す場合は、逆に2を掛ける必要があるので注意。
var d2 = d1.AddSeconds(ver.Revision * 2);
Console.WriteLine(d2.ToString("yyyy/MM/dd HH:mm:ss"));
}
}
}
AssemblyInfo.csはこんな感じになっています。
ここに書いてあるとおり、AssemblyVerionについては”1.0.*”とかいう指定をしておけば、”1.0.5345.35759″のような形式でBuildとRevisionが自動で入るようになります。Buildに入っているのは、2000年1月1日からの経過日数、Revisionに入っているのは0時からの経過秒数、ということなので1日何回もビルドすると、BuildはそのままでRevisionが増えていくことになります。