Jan
9
单身宅男,周末只好在家折腾新手机。
OK,回归正题,这里主要记录几个搭建Windows Mobile 6.5 Professional开发环境需要注意的问题。过程不详细,无图无真相。但是我相信,只要几个需要注意的问题搞定了,其他的对我们伟大的程序员同学们来说还是很简单的。
一.安装必备
1.Microsoft ActiveSync 4.5
2.Microsoft Visual Studio 2008 + SP1
3.Windows Mobile 6 Professional SDK Refresh
4.Windows Mobile 6.5 Professional Developer Tool Kit
这里需要注意的是VS 2008需要打上SP1,而WM6.5本质上还是使用6.0的SDK,所以在安装官方提供的WM6.5 DTK(Developer Tool Kit)前,需要先安装WM 6.0的SDK。安装WM6.5的DTK时,会对6.0的SDK做部分更新,并安装WM6.5的模拟器。
二.可能出现的问题
安装过程中,都是点下一步,这个难不倒伟大的程序员同学们。但是我用的Win2003,在安装WM6.0 SDK时,出现错误提示:“系统管理员设置了系统策略,禁止进行此安装。”。有可能会有同学出现跟我一样的错误,或者类似于“文件被数字签名策略拒绝(File was rejected by digital signature policy)”之类的错误,这里需要修改注册表搞定之:
修改 HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Safer\CodeIdentifiers 注册表项下面的 PolicyScope 的注册表值,将值从0改为1,然后就可以安装了。安装完请自行改回来。
三.开发相关
1.新建项目的时候,可以选择SDK,选择WM6.0就可以了
2.部署的时候,注意MS ActiveSync连接设置里要勾上“允许连接到以下其中一个端口”,并选择“DMA”,这样模拟器才能连上MS ActiveSync
四.手机上.Net Compact Framework的安装
转到C:\Program Files\Microsoft.NET\SDK\CompactFramework\v3.5\WindowsCE目录下,将NETCFv35.wm.armv4i.cab拷贝到手机中,然后运行cab文件就可以了,那是相当简单啊
其他的对各位同学来说貌似应该没什么问题了。不过对我来说还有一个很囧的问题:
我的本子分辨率是1280*800,而我的手机是480*800的分辨率。这样一来,我启动WM 6.5 WVGA模拟器时,800像素的高加模拟器外框菜单啥的,本子不够显示了,此问题除了砸钱买外接显示器外无解。。。
OK,回归正题,这里主要记录几个搭建Windows Mobile 6.5 Professional开发环境需要注意的问题。过程不详细,无图无真相。但是我相信,只要几个需要注意的问题搞定了,其他的对我们伟大的程序员同学们来说还是很简单的。
一.安装必备
1.Microsoft ActiveSync 4.5
2.Microsoft Visual Studio 2008 + SP1
3.Windows Mobile 6 Professional SDK Refresh
4.Windows Mobile 6.5 Professional Developer Tool Kit
这里需要注意的是VS 2008需要打上SP1,而WM6.5本质上还是使用6.0的SDK,所以在安装官方提供的WM6.5 DTK(Developer Tool Kit)前,需要先安装WM 6.0的SDK。安装WM6.5的DTK时,会对6.0的SDK做部分更新,并安装WM6.5的模拟器。
二.可能出现的问题
安装过程中,都是点下一步,这个难不倒伟大的程序员同学们。但是我用的Win2003,在安装WM6.0 SDK时,出现错误提示:“系统管理员设置了系统策略,禁止进行此安装。”。有可能会有同学出现跟我一样的错误,或者类似于“文件被数字签名策略拒绝(File was rejected by digital signature policy)”之类的错误,这里需要修改注册表搞定之:
修改 HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Safer\CodeIdentifiers 注册表项下面的 PolicyScope 的注册表值,将值从0改为1,然后就可以安装了。安装完请自行改回来。
三.开发相关
1.新建项目的时候,可以选择SDK,选择WM6.0就可以了
2.部署的时候,注意MS ActiveSync连接设置里要勾上“允许连接到以下其中一个端口”,并选择“DMA”,这样模拟器才能连上MS ActiveSync
四.手机上.Net Compact Framework的安装
转到C:\Program Files\Microsoft.NET\SDK\CompactFramework\v3.5\WindowsCE目录下,将NETCFv35.wm.armv4i.cab拷贝到手机中,然后运行cab文件就可以了,那是相当简单啊
其他的对各位同学来说貌似应该没什么问题了。不过对我来说还有一个很囧的问题:
我的本子分辨率是1280*800,而我的手机是480*800的分辨率。这样一来,我启动WM 6.5 WVGA模拟器时,800像素的高加模拟器外框菜单啥的,本子不够显示了,此问题除了砸钱买外接显示器外无解。。。
Aug
8
在博客园看到某人讲面试时很多人基础的委托各版本写法有啥不一样都不知道。还好我知道,不然就被鄙视了
其实我心想这算啥,我们公司里的大部分连委托是啥都不知道,别说分清各版本写法了。
自从被忽悠进这个公司,屈才啊,哈哈
今天开始休息9天, はっ,はっ,はっ,夏休みが始まりました
using System;
namespace ConsoleTest
{
public class Program
{
delegate void TestDelegate(string str);
private void Print(string message)
{
Console.WriteLine(message);
}
private void Test()
{
TestDelegate testDelegate1 = new TestDelegate(Print);
testDelegate1(".Net FrameWork 1.x");
TestDelegate testDelegate2 = delegate(string str)
{
Console.WriteLine(str);
};
testDelegate2(".Net FrameWork 2.0");
TestDelegate testDelegate3 = (str) => Console.WriteLine(str);
testDelegate3(".Net FrameWork 3.x");
}
static void Main()
{
Program p = new Program();
p.Test();
Console.ReadLine();
}
}
}
namespace ConsoleTest
{
public class Program
{
delegate void TestDelegate(string str);
private void Print(string message)
{
Console.WriteLine(message);
}
private void Test()
{
TestDelegate testDelegate1 = new TestDelegate(Print);
testDelegate1(".Net FrameWork 1.x");
TestDelegate testDelegate2 = delegate(string str)
{
Console.WriteLine(str);
};
testDelegate2(".Net FrameWork 2.0");
TestDelegate testDelegate3 = (str) => Console.WriteLine(str);
testDelegate3(".Net FrameWork 3.x");
}
static void Main()
{
Program p = new Program();
p.Test();
Console.ReadLine();
}
}
}
其实我心想这算啥,我们公司里的大部分连委托是啥都不知道,别说分清各版本写法了。
自从被忽悠进这个公司,屈才啊,哈哈
今天开始休息9天, はっ,はっ,はっ,夏休みが始まりました
Aug
3
日本Release过来的版本中,Release设定的输出路径是..\..\Adll\,Debug设定的输出路径是..\..\Adll.Debug\
每次取了最新版本后,调试程序时都要手工修改Debug的路径,解决方案下共85个工程,麻烦的很。上班时间网络又有监控,不方便上网下载,便自己动手花了一小会时间简单写了个。
软件截图:

源码和可执行文件:
每次取了最新版本后,调试程序时都要手工修改Debug的路径,解决方案下共85个工程,麻烦的很。上班时间网络又有监控,不方便上网下载,便自己动手花了一小会时间简单写了个。
软件截图:

源码和可执行文件:
Jan
12
每次DataReader里取得数据一个个赋给实体类着实麻烦
写了个方法,用反射牺牲点性能,图个方便了.性能可以用缓存弥补回来
用法:
写了个方法,用反射牺牲点性能,图个方便了.性能可以用缓存弥补回来
public static object DataReaderToEntity(IDataReader dr, object entity)
{
try
{
PropertyInfo[] pilist = entity.GetType().GetProperties();
foreach (PropertyInfo pi in pilist)
{
for (int i = 0; i < dr.FieldCount; i++)
{
if (pi.Name.Equals(dr.GetName(i)))
{
pi.SetValue(entity, Convert.ChangeType(dr[i], pi.PropertyType), null);
}
}
}
return entity;
}
catch
{
return null;
}
}
{
try
{
PropertyInfo[] pilist = entity.GetType().GetProperties();
foreach (PropertyInfo pi in pilist)
{
for (int i = 0; i < dr.FieldCount; i++)
{
if (pi.Name.Equals(dr.GetName(i)))
{
pi.SetValue(entity, Convert.ChangeType(dr[i], pi.PropertyType), null);
}
}
}
return entity;
}
catch
{
return null;
}
}
用法:
Entity entity = (Entity)DataReaderToEntity(dr, new Entigy());
Oct
23
有时候项目可能会有特殊要求,需要能够修改App.Config实现对应用程序的配置,但是*. Settings文件的便捷性又实在不忍抛弃,于是有了这篇文章.此次PLC模拟器开发中刚好用到,帮同事写了一下.其实很简单,就是用反射获取类的属性值,并更新到XML文件中去.直接上代码:




下载文件

