devlights
4/13/2015 - 7:10 AM

アセンブリのバージョンのbuildとrevisionについて

アセンブリのバージョンの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が増えていくことになります。