2016-10-31 12 views
0

4 파트로 변환하려는 5 파트 빌드 버전 (예 : 1.9.0.0.1)이 있습니다. 다음 코드를 사용하여 메이저 및 마이너 리비전을 결합합니다.Microsoft 빌드 버전 : MajorRevision과 MinorRevision을 리비전에 결합하십시오.

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

이 1.9.0.65536을 초래하지만 개정에 허용되는 최대 값은 메이저와 마이너 개정을 결합하는 정확한 공식은 무엇 65535입니다?

감사

+0

3 파트 빌드 버전을 사용하지 않는 이유는 무엇입니까? '새 버전 (major, minor, build)'에는 이미 메이저 빌드 개정판과 마이너 빌드 개정판이 모두 포함되어 있기 때문입니다. – TheRealVira

답변

2

뿐만 아니라 (이것은 모두 크고 작은 개정 번호가 포함 않기 때문에) 그냥 세 부분 버전 번호를 사용할 수 있습니다

new Version(major, minor, build) 

을하지만 당신은 또한 Version Constructor (String)을 사용할 수

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

그러나 정수로 분할 된 문자열을 자동으로 구문 분석하므로 오류가 제거되지 않습니다. 그래서 세 부분 버전을 사용하는 것이 좋습니다 ... 당신은보다 System.Reflection.Assembly.GetExecutingAssembly()를 사용하여 버전에 액세스하고 자신의 버전 문자열을 만들 수

:

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 

! 그들은 심지어 귀하의 질문에 대한 답변을 설명 :

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

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

하지만 여전히 실제로 당신의 유스 케이스에 맞는 생각해!