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