MF训练套件(Tip1):如何获取WinPhone程序集的版本号??
引言:
在前段时间,团队内部会议上,iOS, Android端的leader在汇报用户使用客户端反馈时, 只能根据用户的描述来排查出现的问题以及原因, 放出去的版本多了,有时很难分清A用户出现的问题是v1.0.0的版的?还是v1.0.1版的,所以,如何获取应用的程序集版本号,在一定程序上能够快速定位到问题.
一、问题场景
开发移动应用产品,业内听到较多的做法是:敏捷,快速版本迭代更新。殊不知,迭代的快了,容易扯着。
我记得云城在刚创建之初,当时还没有做移动产品,完全是给Bambook输出血液,即内容, 某系统在同步这块下了非常大的功夫跟精力,但由于没有做过这类系统架构的经验,导致在开发过程中的bug飙升,然,又不得不提供给“需求方”一个又一个版本,所以,抛出去的组件版本连测试的同事都有点 眼花,幸运的是,文华(原云城技术总监)会每周举行”Bug消灭会”,专门针对近一周内出现的问题进行汇总、筛选,并当场找开发工程师解决,提出问题的根源,解决的方法。
有些bug隐藏在不同的版本中,A说a这个bug已经修复掉了,B说我在小b那个设备上还重现着呢,怎么可能修复掉呢?A对B说,你用的哪个设备?什么固件版本?组件版本是多少?B傻眼,无以回答…
以上的情景,在大多数的开发团队中会碰到,还有,做Android开发的朋友也喜欢做多个版本的迭代,如果不事先做好程序集版本的收集,那么,用户反馈上来的问题是哪个版本出现的,就不知道了。
另有一种情况,即:版本更新,应用内置检查更新功能,此时,server端需要拿到当前用户手上的版本号跟服务器的版本做比对,不一致的话,则进行更新..
二、解决之道
Windows Phone的解决方法与其他端并无差别,归纳起来,主要是获取Assembly中的Version值,代码如下:
1: /// <summary>
2: /// 获取程序集版本号
3: /// </summary>
4: /// <returns></returns>
5: public string GetVersionNumber()
6: {
7: try
8: {
9: string version = typeof(MainPage).Assembly.ToString();
10: if (!string.IsNullOrEmpty(version)
11: && version.IndexOf("Version=") >= 0)
12: {
13: version = version.Substring(version.IndexOf("Version=") + "Version=".Length);
14: version = version.Substring(0, version.IndexOf(","));
15: return "version " + version;
16: }
17: else
18: {
19: return "version unknown";
20: }
21: }
22: catch (Exception ex)
23: {
24: return "version unknown";
25: }
26: }
效果如下:
说明一点:
你在本地拿到的这个版本号与你把应用提交到Marketplace上获取的,不是同一个,切记!
总结:
应用版本的比对,版本更新的均可以使用此种方法处理,如果您有更好的方式,请告诉我。