2016-10-31 3 views
0

私は4パートに変換したい5パートビルドバージョン(ex 1.9.0.0.1)を持っています。私は次のコードを使用して、メジャーとマイナーリビジョンを結合しています。Microsoft Build Version:MajorRevisionとMinorRevisionをリビジョンに組み合わせる

new Version(major, minor, build, majorRevision | (minorRevision << 16)

これが1.9.0.65536になりますが改訂のために許容される最大値は、メジャーとマイナーリビジョンを結合するための正しい式は何65535ですか?

おかげで(それは両方とも、マイナーとメジャーリビジョン番号が含まれないため)

+0

なぜ3パートビルドバージョンを使用しないのですか? 'new Version(major、minor、build)'にはメジャービルドリビジョンとマイナービルドリビジョンの両方が既に含まれているためです。 – TheRealVira

答えて

2

だけでなく、あなただけの3つの部分バージョン番号を使用することができます。

new Version(major, minor, build) 

いますが、Version Constructor (String)を使用することができます。

string version = major + "." + minor + "." + build + "." + (majorRevision | (minorRevision << 16)); 
var ver = new Version(version); 

しかし、整数に分割された文字列を自動的に解析するため、エラーは削除されません。 Version.Revision Propertyのマニュアルの偉大な例もあります

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly(); 
string myVersion = assembly.GetName().Version + "."; 
int major = int.Parse(myVersion.Split('.')[0]); // Get the major version number 
int minor = int.Parse(myVersion.Split('.')[1]); // Get the minor version number 
myVersion += (major | (minor << 16)) + ""; // Append the rest 

:だから私はあなたがよりSystem.Reflection.Assembly.GetExecutingAssembly()を使用して、あなたのバージョンにアクセスして、独自のバージョン文字列を作成することができます...

を3つの部分バージョンを使用することをお勧め!彼らはあなたの質問への答えについても説明しました:

Version interim = new Version(2, 4, 1128, (100 << 16) + 2); 

// major.minor.build.majRev/minRev = 2.4.1128.100/2 

しかし、実際にあなたのユースケースに合っているかどうかはまだ考えています!

関連する問題