2016年2月13日土曜日

アプリケーションのバージョン情報の書き方

アプリを作っていると毎回おろそかになるバージョン情報。何回メンテしても常に1.0.0.0ということばかり。歴史のあるアプリだとどれが最新のバイナリか自分自身ですらわからなくなる。そこでバージョンについて調べてみた。

まとめ

以下のように書くのが良さそう。

[assembly: AssemblyVersion("1.0.*")]
//[assembly: AssemblyFileVersion("1.0.0.0")]

理由 

「*」を付けておけば、Visual Studioでビルドした時に勝手に更新してくれるため、少なくとも同じバージョンで機能の違うモジュールは作られない。

機能が同じだが、バージョンが違うモジュールは作られてしまうため、機能的な違いはメジャーバージョンとマイナーバージョンで表すようにする。

AssemblyFileVersion属性はコメントアウトする。こうすることでAssemblyVersion属性と同じ値になる。


バージョン番号の各階層の説明

メジャーバージョン:手動指定のみ可
マイナーバージョン:手動指定のみ可
ビルド番号        :2000/1/1からの経過日数
リビジョン        :その日の00:00:00からの経過秒数を2で割った数

※時刻はlocal timeなので、GMTではなくJSTであり、翌日は0から始まるため、基本的にはビルド番号のみで新旧が判断できる。


注意点

ライブラリの作成時は、クライアント側でアセンブリを厳密に名前指定している場合、クライアント側もリビルドする必要が出てくる。(実質的に「*」は使えなくなる。)

設定ファイル(user.config)を保存するフォルダ名にバージョン番号が含まれているため、保存したuser.configの情報が正しく取得できなくなる。


VBの場合は「*」が使えない
Microsoft Visual Basic® .NET プロジェクトでは、 プロジェクトが Visual Studio .NET IDE (統合開発環境) 内で最初にビルドされるときのみアセンブリ バージョンが更新されます。 同一インスタンスの Visual Studio .NET 内の後続のリビルドでは、バージョン番号は変化しません。

参考

ソフトウェアにつきもののバージョンとは?
http://memomo2.blogspot.jp/2013/06/blog-post_6.html

[VS2010]exeのバージョン表示で,リビジョンNoを自動インクリメントさせる
http://nanoappli.com/blog/archives/1992

アセンブリのバージョン情報について
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=46843&forum=7

Visual Studio .NET と Visual SourceSafe を使用したチーム開発
https://msdn.microsoft.com/ja-jp/library/ms998223.aspx

Visual Studioのプロジェクトで最初にやる設定
http://memomo2.blogspot.jp/2016/02/visual-studio.html

0 件のコメント:

コメントを投稿