如何在C#中将汇编版本作为整数获取?

3 .net c#

我可以把它作为一个字符串:

Assembly.GetExecutingAssembly().GetName().Version()  
Run Code Online (Sandbox Code Playgroud)

如何将此数字转换为int?


输入示例:

8.0.0.1

预期产量:

8001

VVS*_*VVS 12

如果您真的必须进行此转换,则至少应为每个版本部分保留足够的数字位数.

主要,次要和修订的两个数字和Build的四个数字:

var version = Assembly.GetExecutingAssembly().GetName().Version();

Debug.Assert(version.Major >= 0 && version.Major < 100)
Debug.Assert(version.Minor >= 0 && version.Minor < 100)
Debug.Assert(version.Build >= 0 && version.Build < 10000)
Debug.Assert(version.Revision >= 0 && version.Revision < 100)

long longVersion = version.Major * 100000000L + 
                   version.Minor * 1000000L + 
                   version.Build * 100L + 
                   version.Revision;

int intVersion  = (int) longVersion;

Debug.Assert((long)intVersion == longVersion)
Run Code Online (Sandbox Code Playgroud)

请注意,对于某些特殊版本,此方法仍然会失败!

甚至不要考虑版本21.47.4836.48 :)

编辑:添加断言.