如何在C#中以整数形式获取程序集版本? [英] How can I get the assembly version as a integer in C#?

查看:45
本文介绍了如何在C#中以整数形式获取程序集版本?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以将其作为字符串获取

  Assembly.GetExecutingAssembly().GetName().Version() 

如何将该数字转换为整数?


示例输入:

8.0.0.1

预期输出:

8001

解决方案

如果确实需要进行此转换,则至少应为每个版本部分保留足够的数字.

主要,次要和修订版本分别为两位数,内部版本"为4位:

  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 =版本.主要* 100000000L +次要* 1000000L +建造* 100L +版本.修订版;int intVersion =(int)longVersion;Debug.Assert((long)intVersion == longVersion) 

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

甚至不用考虑版本21.47.4836.48:)

:添加了断言.

I can get it as a string:

Assembly.GetExecutingAssembly().GetName().Version()  

How can I convert this number to an int?


Example input:

8.0.0.1

Expected output:

8001

解决方案

If you really have to do this conversion, you should at least reserve an adequate amount of digits for every version part.

Two digits for Major, Minor and Revision and four for 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)

Note that this method will still fail for some exotic versions!

Don't even think about version 21.47.4836.48 :)

EDIT: Added assertions.

这篇关于如何在C#中以整数形式获取程序集版本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆