可能經(jīng)過很多博客的介紹,大家都知道代碼段的使用,使用代碼段可以很方便地生成一些常用的代碼格式,確實(shí)對(duì)我們開發(fā)很方便。在團(tuán)隊(duì)開發(fā)中或者在某些情況下我們經(jīng)??赡苓€會(huì)希望使用Visual Studio生成的代碼自動(dòng)帶有一些信息,比如代碼文件的創(chuàng)建時(shí)間、代碼的
可能經(jīng)過很多博客的介紹,大家都知道代碼段的使用,使用代碼段可以很方便地生成一些常用的代碼格式,確實(shí)對(duì)我們開發(fā)很方便。在團(tuán)隊(duì)開發(fā)中或者在某些情況下我們經(jīng)??赡苓€會(huì)希望使用Visual Studio生成的代碼自動(dòng)帶有一些信息,比如代碼文件的創(chuàng)建時(shí)間、代碼的說明及對(duì)命名空間的引用等等,實(shí)際上這個(gè)功能經(jīng)周公證實(shí)在Visual Studio2005以上版本中就支持了。
下面以周公的本本的具體情況為例來加以說明,在周公的DELL 1425(之所以提這款筆記本是提醒大家不要購買垃圾DELL)上系統(tǒng)是安裝在C盤,在系統(tǒng)盤下同時(shí)安裝了Visual Studio 2005和Visual Studio 2008兩套Visual Studio,并且安裝了正版的SQL Server 2005,因?yàn)橄到y(tǒng)盤經(jīng)常在Windows XP和Windows 7之間切換并且還想在Windows XP和Windows 7之間共享某些個(gè)人配置,所以將我的文檔目錄設(shè)置到了系統(tǒng)最后的一個(gè)盤G盤上了,具體路徑為G:/My Documents,如果不做特別配置應(yīng)為C:/Documents and Settings/zhoufoxcn/My Documents,這一點(diǎn)尤其注意。
這里針對(duì)Visual Studio 2008來進(jìn)行說明,首先我們打開C:/Program Files/Microsoft Visual Studio 9.0/Common7/IDE這個(gè)目錄(如果使用Visual Studio 2005則對(duì)應(yīng)的路徑為C:/Program Files/Microsoft Visual Studio 8/Common7/IDE),可以看到如下的情況:
從上圖中可以看出ItemTemplates和ProjectTemplates文件夾被周公選中了,因?yàn)檫@個(gè)文件夾對(duì)我們有用。其中ItemTemplates文件中存放著我們向項(xiàng)目添加文件時(shí)的模板,ProjectTemplates文件夾顧名思義存放著我們創(chuàng)建項(xiàng)目的模板。這些文件夾中的模板分別會(huì)在我們創(chuàng)建文件或者項(xiàng)目時(shí)出現(xiàn)。
除了這些模板之外,Visual Studio在新建時(shí)還會(huì)搜索當(dāng)前用戶的個(gè)人模板,在周公的本本上針對(duì)Visual Studio 2008的個(gè)人模板存放路徑為G:/My Documents/Visual Studio 2008/Templates(如果沒有經(jīng)過這種這樣的特殊設(shè)置,這個(gè)路徑可能為C:/Documents and Settings/zhoufoxcn/My Documents/Visual Studio 2008/Templates,其中的zhoufoxcn為當(dāng)前登錄系統(tǒng)的用戶名),打開這個(gè)文件夾,我們看到如下情況:
在沒有做任何配置的時(shí)候這兩個(gè)文件夾都是空的,在此時(shí)如果我們向項(xiàng)目中添加文件會(huì)看到這樣的情況,如下圖:
從上圖可以看出,我的模板是空的。
好了,下面周公將C:/Program Files/Microsoft Visual Studio 9.0/Common7/IDE下的ItemTemplates和ProjectTemplates文件夾拷貝到了當(dāng)前個(gè)人配置文件夾G:/My Documents/Visual Studio 2008/Templates下(請(qǐng)注意你的電腦配置與我的電腦配置中路徑的對(duì)應(yīng)關(guān)系),可能系統(tǒng)會(huì)提示是否覆蓋,點(diǎn)擊確認(rèn)之后我們?cè)僭谌魏雾?xiàng)目中創(chuàng)建新文件會(huì)看到下面的情況,如下圖所示:
此時(shí)我們可以看到我的模板下可以創(chuàng)建的新文件類型和系統(tǒng)的一摸一樣,如果此時(shí)我們選擇創(chuàng)建的話,生成的文件內(nèi)容也會(huì)和系統(tǒng)模板的一樣。為了打造屬于我們個(gè)性的代碼,我們需要對(duì)我的模板進(jìn)行改造。
舉例來說,假如我們要改變系統(tǒng)默認(rèn)生成的代碼,想在創(chuàng)建代碼時(shí)自動(dòng)添加一些信息,比如我們想讓默認(rèn)生成的是public的,那么可以按照下面的步驟做:
首先打開我的模板存放路徑,在周公這里這個(gè)路徑是G:/My Documents/Visual Studio 2008/Templates/ItemTemplates(請(qǐng)注意你的可能與周公的不同),這個(gè)文件夾下存放的是包含VB.NET、C++及C#等新建項(xiàng)目的模板,如果我們要改變的是C#文件的,請(qǐng)繼續(xù)打開C#文件的創(chuàng)建模板,在周公本本上這個(gè)路徑為G:/My Documents/Visual Studio 2008/Templates/ItemTemplates/CSharp/Code/2052,在這個(gè)文件夾下有四個(gè)zip文件,名稱是Class.zip、CodeFile.zip、Interface.zip和NETCFv2-Class.zip,分別對(duì)應(yīng)的是添加類、代碼文件、接口及.NET Compact Framework類的模板,在每個(gè)zip壓縮包里都有一個(gè).cs文件和一個(gè).vstemplate文件。在這里周公將Class.zip解壓出來,這時(shí)的class.cs文件代碼如下:
將代碼更改如下:
保存class.cs,然后利用壓縮軟件將class.cs和剛剛從Class.zip中解壓出來Class.vstemplate文件壓縮為Class.zip文件(注意一定要壓縮成zip文件而不是rar或者其它格式文件,WinRAR提供這種功能),然后替換原來的Class.zip文件。
好了,現(xiàn)在我們可以檢驗(yàn)我們的成果了。隨便打開一個(gè)項(xiàng)目,按照“添加”-“新建項(xiàng)”的步驟添加,在彈出的對(duì)話框中“我的模板”下選擇“類”(因?yàn)槲覀儎倓偢牡木褪俏业哪0逯刑砑拥念惖哪0澹?,這時(shí)Visual Studio 2008按照模板生成的代碼如下:
從上面的例子可以看出選擇我的模板的項(xiàng)就會(huì)按照預(yù)定好的格式生成代碼,如果我們對(duì)項(xiàng)目中的代碼有特殊格式要求的話,在這里統(tǒng)一定制非常方便,至少周公以后會(huì)用這種模板來寫公布在博客上的代碼,因?yàn)橹芄⒁獾接泻芫W(wǎng)站喜歡將別人博客上的文章中的鏈接信息和作者信息去掉,這事實(shí)上違反了作者的聲明。有時(shí)間的話我們可以針對(duì)每一個(gè)項(xiàng)更改出自己的模板。
上面我們僅僅演示了生成新文件的配置,其實(shí)我們還可以更改新生成項(xiàng)目的配置,按照前面的操作我們添加新項(xiàng)目時(shí)也有我的模板選項(xiàng),如下圖所示:
不過即使從我的模板中選擇創(chuàng)建新項(xiàng)目也和系統(tǒng)中的項(xiàng)目一樣,因?yàn)闆]有經(jīng)過任何特殊配置。我們可以修改G:/My Documents/Visual Studio 2008/Templates/ProjectTemplates/CSharp下的項(xiàng)目模板,它們同樣也是一個(gè)zip文件,比如我們想要統(tǒng)一程序集信息,可以修改這個(gè)zip文件中的assemblyinfo.cs文件的內(nèi)容,這樣就不用每次都手動(dòng)去修改程序集信息了。
通過上面的步驟之后可以讓我們很方便地定制了添加新項(xiàng)或者新項(xiàng)目的模板,這在公司中團(tuán)隊(duì)開發(fā)中還是相當(dāng)有用的,也方便對(duì)代碼文件的格式的統(tǒng)一。
需要說明的是在編輯模板時(shí)會(huì)看到一個(gè)形如$time$、$rootnamespace$之類的東西,這些算是生成模板時(shí)用到的變量吧,在編輯模板時(shí)可以使用哪些變量微軟沒有官方的資料,不過周公留意了一下,大概有如下:
Itemname
safeitemname
sateitemrootname
projectname
safeprojectname
rootnamespace
guid[1-10]
time
year
username
userdomain
machinename
clrversion
targetframeworkversion
registeredorganization
wizarddata
可能有些人對(duì)上面的變量名不是太理解,其實(shí)是有規(guī)律的,都是一到幾個(gè)單詞的全稱,只不過沒有遵循我們平常所說的Camel和Pascal命名法則罷了(大家可以看的出不遵守命名法則確實(shí)難讀多了),知道這個(gè)規(guī)律之后這些變量的用途大家都能顧名思義了,如果確實(shí)不能也能根據(jù)最終生成的代碼推斷出它的用法的。此外,如果覺得每次都要從“我的模板下”選擇很麻煩的話,可以用更改后自定義模板替換系統(tǒng)中的模板。在剛剛編輯模板時(shí)我們還看到了一些簡(jiǎn)單邏輯,比如當(dāng)使用的項(xiàng)目.NET Framework版本為3.5時(shí)會(huì)自動(dòng)使用System.Linq命名空間,我們還可以模范系統(tǒng)模板中的邏輯增加更多更符合個(gè)人或者公司需要的邏輯。
周公
2010-06-20
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com