csharp アセンブリのバージョンからビルド日时を求める

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp アセンブリのバージョンからビルド日时を求める相关的知识,希望对你有一定的参考价值。

namespace Sazare.Samples
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    using Sazare.Common;

    #region AssemblySamples-01

    /// <summary>
    /// System.Reflection.Assemblyクラスのサンプルです。
    /// </summary>
    /// <remarks>
    /// アセンブリのバージョンが自動採番されている場合に
    /// ビルドされた日時を求める方法について記述しています。
    /// </remarks>
    [Sample]
    public class AssemblySamples01 : IExecutable
    {
        public void Execute()
        {
            //
            // アセンブリのバージョンについて
            //
            // アセンブリのバージョンはAssemblyNameからVersionプロパティから取得できる。
            // System.Versionは、Major, Minor, Build, Revision のプロパティを持っており
            // これが、そのままVisualStudioで設定するバージョン番号に対応する。
            //
            var asm = GetType().Assembly;
            var ver = asm.GetName().Version;

            Output.WriteLine(ver);

            //
            // アセンブリバージョンは 通常 AssemblyInfo.cs 内で 
            //    [assembly: AssemblyVersion("1.0.0.0")]
            // のようにデフォルトで指定してあるが、これを
            //    [assembly: AssemblyVersion("1.0.*")]
            // とすると、BuildとRevisionの部分を自動採番するように
            // 設定できる。この場合VisualStudioにてビルドする度に
            //    1.0.5582.24111
            // のようにバージョンが変わっていく。
            //
            // VisualStudioの場合、BuildとRevisionに指定される値に
            // 以下の規則性があり、計算することでビルドされた日時が求められる。
            //   ・Buildの部分は、2000/01/01からの経過日数
            //   ・Revisionの部分は、0時からの経過秒数を2で割った値
            //
            // 参考にしたURL:
            //    http://www.atmarkit.co.jp/fdotnet/dotnettips/187asmverinfo/asmverinfo.html
            //    http://stackoverflow.com/questions/826777/how-to-have-an-auto-incrementing-version-number-visual-studio
            //    http://stackoverflow.com/questions/356543/can-i-automatically-increment-the-file-build-version-when-using-visual-studio
            //    https://msdn.microsoft.com/en-us/library/system.reflection.assemblyversionattribute.aspx
            //    https://msdn.microsoft.com/ja-jp/library/system.reflection.assemblyversionattribute.aspx
            //
            // 上のリンクの内、公式なMSDNのページを見ると、英語版の方は
            //   "The default build number increments daily. The default revision number is the number of seconds since midnight local time (without taking into account time zone adjustments for daylight saving time), divided by 2."
            // と記載されている (上記ページの 2015/04/14 時点の内容から一部引用)
            // が、日本語版の方だと
            //   "既定のビルド番号は、日単位でインクリメントされます。 既定のリビジョン番号はランダムな値になります。"
            // と記載されており (上記ページの 2015/04/14 時点の内容から一部引用)、ちょっと異なる。
            //
            var build    = ver.Build;
            var revision = ver.Revision;
            var baseDate = new DateTime(2000, 1, 1);

            Output.WriteLine("ビルドされた日時:{0}", baseDate.AddDays(build).AddSeconds(revision * 2));

            //
            // 出力結果は、以下のようになる。
            // ================== START ==================
            // 1.0.5582.24285
            // ビルドされた日時:2015/04/14 13:29:30
            // ==================  END  ==================
            //
        }
    }
    #endregion
}

以上是关于csharp アセンブリのバージョンからビルド日时を求める的主要内容,如果未能解决你的问题,请参考以下文章

csharp アセットバンドルビルドスクリプト

php WPのバージョンを消す

php WPのバージョンを削除

sh 头盔のバージョンを取得する

sh 咕噜まわりのバージョン确认

html 即のバージョンによる条件分岐文