用VS2005开发基于Compact Framework的手机软件有一阵子了,由于资料太少,出了很多稀奇古怪的问题,好在在玩Kylix开发的时候已经都把人磨练成熟了,因此慢慢查找原因也基本靠自己的力量一一解决,现在把这些问题记载下来,给以后同好者遇到相同问题的时候参考。
先说一个最奇怪的问题,就是VS2005原始版本开发WM5软件的时候用模拟器调试,一切OK,单步跟踪一切正常。但是换到我的577W的真机环境下,可以执行,却不能调试。一旦启动调试,VS2005就报“当前不会命中断点。尚未加载指定的模块。”,如下图:
这样我们就无法调试了,起先我在网上查资料说是没有加载调试信息的原因,但是在模拟器中调试是正常的,在真机上也能正常运行,就是无法调试,后来通过读取577W的注册表[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETCompactFramework]下我发现我手机安装的CompactFramework版本为2.0.7045.00即2.0SP2版本,而VS2005带的是2.0.5238.0,因此版本不一致,可能调试信息就无法加载。
Version | Release |
---|---|
1.0.2268.0 | 1.0 RTM |
1.0.3111.0 | 1.0 SP1 |
1.0.3226.0 | 1.0 SP2 (Recalled) |
1.0.3227.0 | 1.0 SP2 Beta |
1.0.3316.0 | 1.0 SP2 RTM |
1.0.4177.0 | 1.0 SP3 Beta |
1.0.4292.0 | 1.0 SP3 RTM |
2.0.4037.0 | 2.0 May CTP |
2.0.4135.0 | 2.0 Beta 1 |
2.0.4317.0 | 2.0 November CTP |
2.0.4278.0 | 2.0 December CTP |
2.0.5056.0 | 2.0 Beta 2 |
2.0.5238.0 | 2.0 RTM |
2.0.6103.0 | 2.0 SP1 Beta |
2.0.6129.0 | 2.0 SP1 RTM |
2.0.7045.0 | 2.0 SP2 RTM |
3.5.7066.0 | 3.5 Beta 1 |
3.5.7121.0 | 3.5 Beta 2 |
原因找到了,我们有2种解决方法,一个是卸载577W的CF框架,然后用VS2005来部署CF即可,这种方法适用于那些ROM不带CF2.0的手机,如果是WM6的手机,因为都带了CF2.0sp2,因此这种方法不可行。因此最好的方法是通过PC机上的增加删除程序,卸载Compact Framework2.0框架,然后从微软站点下载上述表格中跟你手机相匹配的CF框架可再发行包,安装在你VS2005的计算机上即可调试。
经过试用,效果良好,彻底解决了VS2005在真机上调试的问题。(模拟器上调试良好是因为模拟器本身不带2.0CF框架,是VS2005部署上去的),另外我强烈建议卸载VS2005原来自带CF2.0框架的原因是,2.0.5238版本的CF的CAB有点问题,只能安装在机身上,不能安装在卡上,安装完后577W机身存储不过2M了,完全不能用。而2.0sp1以后的版本都可以安装在卡上,极大的节省了机身存储空间。