使用VS2005軟件的最好措施和技巧
原來(lái)在VS2003中,本地化特別是全局本地化文件,并沒(méi)有想象當(dāng)中的方便。VS2003默認(rèn)的本地化策略是頁(yè)面級(jí)資源文件,很多情況下,我們往往會(huì)因?yàn)橘Y源太多,而漏掉幾個(gè)需要維護(hù)的資源。
出于這個(gè)原因,程序員們開(kāi)始考慮使用全局資源文件(Global Resources File),但由于當(dāng)時(shí)在VS2003中沒(méi)有專用的設(shè)計(jì)器,且調(diào)用資源必須使用ResourceManager,使得一些初學(xué)者望而卻步,無(wú)形中提高了技術(shù)門檻。
這次的VS2005則完全改變了這種局面,這在VS2005軟件的資源管理器中最容易體現(xiàn)——加入了 App_GlobalResources(全局資源)和App_LocalResources(本地資源)。正因?yàn)橛辛诉@兩個(gè)文件夾,你的所有頁(yè)面的資源不再是跟著頁(yè)面走了,任何一個(gè)頁(yè)面的資源都會(huì)直接被加到App_LocalResources目錄下,這樣就使頁(yè)面級(jí)資源文件管理變得相對(duì)簡(jiǎn)單。
值得一提的是,這次還在Tools菜單中加入了Generate Local Resource項(xiàng),注意該項(xiàng)僅在設(shè)計(jì)視圖(Design View)下可見(jiàn)。通過(guò)該項(xiàng),你可以把一個(gè)頁(yè)面中的所有控件的資源自動(dòng)生成,資源會(huì)放在當(dāng)前頁(yè)面對(duì)應(yīng)的本地資源文件中,命名是你的控件名稱+'.'+屬性名稱,例如:有一個(gè)Label的ID為L(zhǎng)abel1,則生成的資源有Label1.Text, Label1.ToolTip,資源的值就是你生成時(shí)的Text的值和ToolTip的值,如果沒(méi)有則為空。生成完成后,你會(huì)發(fā)現(xiàn)控件已自動(dòng)與資源綁定,這可以體現(xiàn)在兩個(gè)方面,***,在屬性編輯器(Properties)中,控件的Text和ToolTip沒(méi)有了值,取而帶之的是多了一個(gè)淺紅色的圖標(biāo),表示資源已綁定.
第二就是在aspx的編碼界面中,控件的標(biāo)記屬性中多了一個(gè)meta:resourcekey=“[資源名]”。另外,VS2005軟件的資源編輯器也比原來(lái)VS2003的方便,不再是通用的xml編輯窗口了,有了許多資源編輯器本應(yīng)該有的功能,如添加圖片、添加文本文件、添加聲音文件等,看來(lái)以后網(wǎng)上的第三方資源編輯器要沒(méi)市場(chǎng)了。
再來(lái)看全局資源。全局資源文件不會(huì)自動(dòng)被添加,但是我們可以自己建,也不會(huì)自動(dòng)被綁定(否則豈不成了VS2005 軟件AI版)。當(dāng)你加完資源后,回到代碼編輯界面,你會(huì)發(fā)現(xiàn)Resources的智能感知會(huì)把資源文件名顯示出來(lái)讓你選擇,實(shí)在是方便,例如有個(gè)資源文件叫Res1,其中有一個(gè)String資源叫Text1,你就可以用Resources.Res1.Text1來(lái)獲得它的值??吹竭@樣的功能,再看看原來(lái)自己搭的 VS2003資源維護(hù)框架,不免覺(jué)得有些郁悶。
#t#處很容易想到,一方面資源找起來(lái)方便,另一方面資源名不容易打錯(cuò)?;蛟S你會(huì)覺(jué)得有些好笑,資源名怎么會(huì)打錯(cuò),對(duì)于幾十個(gè)資源來(lái)說(shuō),這或許是可笑的錯(cuò)誤,但當(dāng)資源增加到數(shù)百個(gè)甚至上千個(gè),這種事情很容易發(fā)生。
不過(guò),這次使用后,也發(fā)現(xiàn)了一些不足的地方,但是個(gè)人覺(jué)得從技術(shù)角度實(shí)現(xiàn)的確比較麻煩。比如,如果在使用過(guò)自動(dòng)生成資源后,控件改名了,如果再次自動(dòng)生成資源,VS2005會(huì)重建一個(gè)資源,而不是把原來(lái)的資源刪掉,這樣可能造成無(wú)用資源的堆積,特別是在多次的后期維護(hù)之后,當(dāng)然可能是我要求高了點(diǎn),大家不要見(jiàn)怪。
總的來(lái)說(shuō),我對(duì)這次的VS2005軟件的本地化功能還是很認(rèn)可的,甚至有些感慨,開(kāi)發(fā)工具能做到如此方便易用,真可謂是以用戶為導(dǎo)向,或者說(shuō)以應(yīng)用為導(dǎo)向,在這方面,中國(guó)的程序員應(yīng)該好好向微軟的同仁們學(xué)習(xí)。
由于時(shí)間倉(cāng)促,還沒(méi)有來(lái)得及看基于數(shù)據(jù)庫(kù)的資源支持情況,過(guò)兩天再說(shuō)吧。