讓W(xué)indows CE 6.0 R2支持.NET CF 3.5
.NET Compact Framework已經(jīng)升級(jí)到3.5的版本了,.NET CF 3.5支持LINQ和WCF等新的特性。對(duì)于Windows Mobile的開發(fā)人員來說,只需要安裝一個(gè)更新的CAB包就可以了??墒荳indows CE的開發(fā)者如果想將.NET CF 3.5加入到OS Design,還是需要花一點(diǎn)功夫的。我們會(huì)使用革新2410D開發(fā)板作為我們的平臺(tái),關(guān)于該開發(fā)板的介紹和開發(fā)過程,大家可以參考我之前的文章——《革新2410D開發(fā)板試用手記》,鏈接如下:
http://www.cnblogs.com/aawolf/archive/2008/05/29/1209854.html
來自Mike Hall的QFE
這篇文章的起因是Mike Hall在自己BLOG上發(fā)表的一篇文章:
http://blogs.msdn.com/mikehall/archive/2008/03/17/net-compact-framework-3-5-component-for-windows-embedded-ce-6-0-catalog-component.aspx
這篇文章介紹了微軟在2008年一月份推出的一個(gè)QFE的包,其中包括了.NET Compact Framework 3.5的組件。所謂QFE,就是Quick Fix Engineering,用于快速修復(fù)一些BUG或者增加一些新的功能,修改比SP要小,所以可以每月推出。
好了,既然有老大級(jí)的人物給我們指明了方向,小弟們跟著干就是了,首先在微軟網(wǎng)站上下載這個(gè)QFE包:
http://www.microsoft.com/downloads/details.aspx?FamilyID=a83124d5-7c8e-4abe-87fd-69654561be40&displaylang=en
然后確認(rèn)你的開發(fā)計(jì)算機(jī)上已經(jīng)裝了下面的東西:
1. Visual Studio 2005
2. Visual Studio 2005 SP1
3. Visual Studio 2005 SP1 Update for Vista (if applicable)
4. Windows Embedded CE 6.0 Platform Builder
5. Windows Embedded CE 6.0 SP1 (required if PB 6.0 Tools have been installed)
6. Windows Embedded CE 6.0 R2
別緊張,基本上來說,只要你用的是Windows CE 6.0 R2,那么這些東西就都有了。
接下來,我們確認(rèn)將Visual Studio 2005關(guān)閉,然后運(yùn)行QFE的安裝程序就可以了。如果是在Vista下安裝的話,可能會(huì)遇到安裝文件出錯(cuò)的問題,這是由權(quán)限問題造成的。我們可以參考下面的文章解決:
http://support.microsoft.com/kb/950793/en-us
不過我在Vista下安裝時(shí)沒有碰到這個(gè)問題。
創(chuàng)建.NET Compact Framework 3.5的應(yīng)用程序
好了,安裝完成后,我們是不是需要打開Visual Studio 2005開始我們的平臺(tái)定制歷程了?不,首先還是讓我們先換一臺(tái)機(jī)器。
換機(jī)器干嘛?因?yàn)槲覀冇龅搅艘粋€(gè)邏輯問題——.NET CF 3.5的應(yīng)用程序在哪里?.NET CF 3.5的應(yīng)用程序是由Visual Studio 2008開發(fā)的,而我們的Platform Builder 6.0是運(yùn)行在Visual Studio 2005之上的。您可以將VS 2005和VS 2008裝在同一臺(tái)機(jī)器上,但是我沒有那么做,而是換了臺(tái)裝有VS 2008的機(jī)器,來進(jìn)行下面的應(yīng)用程序開發(fā)。
需要說明的是,按照常規(guī),我們應(yīng)該先用Platform Builder 6.0構(gòu)建一個(gè)CE 6.0的平臺(tái),然后導(dǎo)出SDK,然后再裝有VS 2008的機(jī)器上安裝,安裝完成后再使用VS 2008開發(fā)一個(gè)針對(duì)該CE 6.0平臺(tái)的應(yīng)用程序。如果真這么干,拐彎就拐到爪哇國(guó)去了。
幸好Visual Studio 2008為我們提供了另一種方式,還是來看一下:
打開Visual Studio 2008后,還是首先選擇File – New – Project菜單項(xiàng)。在New Project對(duì)話框中選擇Visual C#中的Smart Device,然后選擇創(chuàng)建Smart Device Project,名字隨便定。
接下來的對(duì)話框?qū)τ诮?jīng)??次椅恼碌呐笥岩矔?huì)很熟悉:
只是這一次我們選擇的Target platform不是Pocket PC或者Smartphone,而是Windows CE,還要記得一定要選擇.NET CF 3.5。
好了,接下來就進(jìn)入了IDE的窗口設(shè)計(jì)器,看起來和普通的WinForm程序沒有太多區(qū)別。我們添加了三個(gè)按鈕和一個(gè)ListBox,還有兩個(gè)菜單項(xiàng)。
在第一個(gè)Button“Message”里添加下面的事件處理函數(shù):
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Hello,.NET CF 3.5");
}
我承認(rèn)我沒追求,所有程序不都是從Hello World開始的嗎?為了要突出一下.NET Compact Framework 3.5的新特性,我們還要添加對(duì)于LINQ的支持:
private void button2_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
var numbers = new List
var evenNumbers =
from p in numbers
where (p % 2) == 0
select p;
foreach (var number in evenNumbers)
listBox1.Items.Add(string.Format("{0} ", number));
}
關(guān)于LINQ我就不多作解釋了,記得添加System.Linq的引用,還有:
using System.Linq;
在添加完Linq后,我們還有一個(gè)更直接的辦法,就是版本號(hào):
private void button3_Click(object sender, EventArgs e)
{
MessageBox.Show(Environment.Version.ToString());
}
System.Environment中的Version屬性可以很直接的告訴我們當(dāng)前運(yùn)行的.NET CLR的版本號(hào)。具體細(xì)節(jié)看MSDN幫助吧。
好了,程序編寫好了,接下來就要運(yùn)行它了。但是我們的Visual Studio 2008里并沒有Windows CE的模擬器。沒辦法,只好選擇Windows Mobile 6 Professional的模擬器來跑了。[!--empirenews.page--]
事實(shí)證明,在應(yīng)用程序開發(fā)方面,Windows CE和Windows Mobile的差距的確不大。程序不但跑起來了,而且菜單還按照Windows Mobile的方式顯示到了窗體下方。
上面就是點(diǎn)擊Version按鈕后的運(yùn)行結(jié)果,可以看到我們的.NET CLR是3.5的。
創(chuàng)建支持.NET CF 3.5的OS Design
OK,終于可以回到我們的Platform Builder里創(chuàng)建包含.NET CF 3.5的OS Design了。我們可以創(chuàng)建一個(gè)新的OS Design,或者利用已有的OS Design。
具體方法請(qǐng)參考:
革新2410D開發(fā)板試用手記(三)
http://www.cnblogs.com/aawolf/archive/2008/06/03/1212696.html
Windows Embedded CE 6.0開發(fā)初體驗(yàn)(五)構(gòu)建CE平臺(tái)
http://www.cnblogs.com/aawolf/archive/2008/01/15/1040306.html
當(dāng)我們打開OS Design的Catalog Item View頁面。在Core OS - CEBASE – Application and Services Development下,我們可以看到.NET Compact Framework 2.0和.NET Compact Framework 3.5兩個(gè)選項(xiàng)。選擇.NET CF 3.5的選項(xiàng)和簡(jiǎn)體中文資源,以及OS Dependencies for .NET Compact Framework 3.5的選項(xiàng)。
當(dāng)然,我們也可以在OS Design的創(chuàng)建向?qū)Ю镞x擇.NET CF 3.5的組件。
為了驗(yàn)證我們的.NET CF 3.5 CLR可以良好運(yùn)行,我們還需要添加一個(gè).NET CF 3.5的應(yīng)用程序。怎么添加呢?
第一步,呃,從另外一臺(tái)機(jī)器上把應(yīng)用程序拷過來……
第二步,在Solution Explorer里選擇OS Design下的Parameter Files下的Project.bib文件。在《Windows Embedded CE 6.0開發(fā)初體驗(yàn)(六)平臺(tái)定制》中我們?cè)敿?xì)討論過bib文件,請(qǐng)參考:
http://www.cnblogs.com/aawolf/archive/2008/02/03/1063444.html
第三步,將.NET CF 3.5的應(yīng)用程序加入到OS Design中:
就一句話,簡(jiǎn)單吧?然后就是OS Design的編譯、下載、運(yùn)行和調(diào)試了。需要說明一點(diǎn)的是,可能由于Debug版的NK.bin太大,我一直沒有成功運(yùn)行起來。不過Release版的一切正常。
關(guān)于編譯和下載的話題,可以參考下面的文章:
革新2410D開發(fā)板試用手記(六)
http://www.cnblogs.com/aawolf/archive/2008/06/24/1228752.html
Windows Embedded CE 6.0開發(fā)初體驗(yàn)(七) 編譯和調(diào)試平臺(tái)
http://we.cnblogs.com/article.aspx?id=20
好了,最后來看一下運(yùn)行結(jié)果:我們點(diǎn)擊了Version按鈕,顯示當(dāng)前的.NET CF CLR確實(shí)是.NET CF 3.5版本。
最后讓大家看看開發(fā)板的裸照吧(開發(fā)板本來就……)