C# WinCE开发实战

发布时间:2025-12-09 21:53:35 浏览次数:4

项目背景

        最近项目要将C# 开发好的代码嵌入车载设备,选择WinCE开发,由于我没有接触过WinCE,也是一头雾水,一边摸索一边尝试,最后也算是摸到了一些门道,分享一下给大家,希望能给有需要的人带来一些帮助。

开发环境

XP系统,安装vs2005,直接新建项目:

注意这里的版本是.net 2.0,后续如果要使用其他的dll文件,版本需要谨慎,不然很容易出错。

踩坑过程

1.磁盘空间不足

        由于开发好的程序使用的是vs2019开发的,使用到了newtonsoft.json,将newtonsoft.json.dll 版本12拷过去引用,发现引用不了,后面才恍然大悟,vs2005应该是无法解析这么高版本的,便拿了适用.net 2.0版本的newtonsoft.json.dll,可以正常引用,但是项目调试的过程就开始踩坑了:

部署失败了,磁盘空间不足,这把我整的蒙蒙的,电脑磁盘那么大,这点程序就撑不住了? 后面才反应过来,这是WinCE智能设备的内存空间,但是为什么一个dll文件的引用会这么大呢?原来是还有compact framework精简版之分的,WinCE智能设备项目都会使用精简版的dll,减少内存空间的消耗。我们使用的newtonsoft.json.dll是原版的,引用的dll也是没有精简的,所以会加载很多,造成空间消耗骤然增加。
        为了让程序能够跑起来,先尝试着看看能不能让智能设备内存空间大一点,让其能够正常部署。在工具->设备仿真器管理器中选了个Pocket PC 2003 SE仿真程序,连接:

很像之前老版本的手机,小时候还玩过,现在操作起来也很熟练,一会就找到了内存:


在上方调整内存大小,最后算是部署成功了,但是却报错了,未能加载…程序集之类的报错,后面通过反编译工具解析,才知道newtonsoft.json必须要用compact framework,不然程序没办法解析其引用的一些程序集,在经过一番努力的查找,终于找到了newtonsoft.json.compact.dll 3.5,在激动的过程中尝试了一下,还是失败,必须要用2.0版本的newtonsoft.json.compact.dll 才可以,在网上找不到这个版本的情况下,只能无奈放弃,打算重新选择系统环境,win7 +vs2008,生成.net3.5的框架来开发(如果有人有newtonsoft.json.compact.dll 2.0请联系我,我将感激涕零!)

2.未能找到文件Program File\…

        我在项目里面根目录中加了个配置文件,用于读取一些基本信息,使用了

string root = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.FullyQualifiedName) + "\\Configure.xml";

确实能定位到\Program File\…,但是我在C盘里面的Program File找半天,找不到生成的项目文件,后来找了很久的资料才明白,这个Program File是智能设备的根目录,而项目调试部署的时候,没有把配置文件拷进去,需要在生成的时候把文件一并拷进去才可以:

把不复制改成始终复制即可。

总结

这篇文章主要是记录自己学习WinCE开发以及踩坑的过程,希望能给大家带来一些有用的帮助!

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477