私は1.5.4735.28467としてコンパイルされたバージョン番号1.5を持っているとします。「*」(ワイルドカード)バージョン番号の.NETの数式は何ですか?
4735と28467を得るための式は何ですか?
私は1.5.4735.28467としてコンパイルされたバージョン番号1.5を持っているとします。「*」(ワイルドカード)バージョン番号の.NETの数式は何ですか?
4735と28467を得るための式は何ですか?
ご注意:代替ツール/ルール/スキーム/マクロ/アドインがあるの/ etc異なる方法でバージョン管理を制御します。使用されている場合、明らかに以下のものを削除します。
しかし、これは"*"
バージョンはバニラのVisual Studio/.NETのビルドプロセスに.build.revision
に計算する方法である。
バージョンを指定して、あなたは少なくとも主要指定する必要があります。メジャーとマイナーを指定する場合、はビルドのアスタリスク(*)を指定できます。これは、2
で割った、真夜中現地時間からの秒数に等しくなるように2000年1月1日現地時間以来、及び 改正のため日数に等しくなるようにビルドの原因となります
Coding Horror: Determining Build Date the hard wayおよびMSDN: AssemblyVersionAttributeを参照してください。このデフォルトの展開動作は、AssemblyVersionAttributeクラス(BCL!)に文書化されていますが、特別なVSコンパイラの動作(Danielのコメントを参照)ではなく、排他的なコンパイラの動作です。
int Build = DateTime.Today.Subtract(new DateTime(2000, 1, 1)).Days;
int Revision = (int)DateTime.Now.Subtract(DateTime.Today).TotalSeconds/2;
これは間違いなくコンパイラの動作です。コンパイラはどのような属性もインスタンス化しません。引数値をメタデータにエンコードするだけです。しかし、その数はコンパイル時に代入されます。コンパイラの特殊なケースでなければなりません。似たようなことをするカスタム属性を書く方法はありません。 – Daniel
@ダニエルそれは良い議論です。私は、バージョン番号の仕組みに関するVS(.NETではなく)リファレンスを見つけることができたらいいと思う。 –
また、Roslynの実装を見ることもできます:http://source.roslyn.codeplex.com/#Microsoft.CodeAnalysis/VersionHelper.cs,95 – eug
、メジャー、マイナー、ビルド、リビジョン:
ここで式の一の実装は、(ダニエルさんのコメントから抽出されたもの)です。ビルドとリビジョンはあなた次第です。 –
http://blogs.msdn.com/b/jensenh/archive/2005/11/11/491779.aspx。しかしそれはMicrosoft Officeのためだ。 .NET Frameworkの場合と同じように動作するかどうかはわかりません。 –
ビルド= DateTime.Today.Subtract(新しいDateTime(2000、1、1))。リビジョン=(int)DateTime.Now.Subtract(DateTime.Today).TotalSeconds/2; これはひどいです。主張されている重複は別の質問です... – Daniel