可能通過不少博客的介紹,你們都知道代碼段的使用,使用代碼段能夠很方便地生成一些經常使用的代碼格式,確實對咱們開發很方便。在團隊開發中或者在某些狀況下咱們常常可能還會但願使用Visual Studio生成的代碼自動帶有一些信息,好比代碼文件的建立時間、代碼的說明及對命名空間的引用等等,實際上這個功能經周公證明在Visual Studio2005以上版本中就支持了。html
下面以周公的本本的具體狀況爲例來加以說明,在周公的DELL 1425上系統是安裝在C盤,在系統盤下同時安裝了Visual Studio 2005和Visual Studio 2008兩套Visual Studio,而且安裝了正版的SQL Server 2005,由於系統盤常常在Windows XP和Windows 7之間切換而且還想在Windows XP和Windows 7之間共享某些我的配置,因此將個人文檔目錄設置到了系統最後的一個盤G盤上了,具體路徑爲G:\My Documents,若是不作特別配置應爲C:\Documents and Settings\zhoufoxcn\My Documents,這一點尤爲注意。dom
這裏針對Visual Studio 2008來進行說明,首先咱們打開C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE這個目錄(若是使用Visual Studio 2005則對應的路徑爲C:\Program Files\Microsoft Visual Studio 8\Common7\IDE),能夠看到以下的狀況:ide
從上圖中能夠看出ItemTemplates和ProjectTemplates文件夾被周公選中了,由於這個文件夾對咱們有用。其中ItemTemplates文件中存放着咱們向項目添加文件時的模板,ProjectTemplates文件夾顧名思義存放着咱們建立項目的模板。這些文件夾中的模板分別會在咱們建立文件或者項目時出現。post
除了這些模板以外,Visual Studio在新建時還會搜索當前用戶的我的模板,在周公的本本上針對Visual Studio 2008的我的模板存放路徑爲G:\My Documents\Visual Studio 2008\Templates(若是沒有通過這種這樣的特殊設置,這個路徑可能爲C:\Documents and Settings\zhoufoxcn\My Documents\Visual Studio 2008\Templates,其中的zhoufoxcn爲當前登陸系統的用戶名),打開這個文件夾,咱們看到以下狀況:網站
在沒有作任何配置的時候這兩個文件夾都是空的,在此時若是咱們向項目中添加文件會看到這樣的狀況,以下圖:ui
從上圖能夠看出,個人模板是空的。spa
好了,下面周公將C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE下的ItemTemplates和ProjectTemplates文件夾拷貝到了當前我的配置文件夾G:\My Documents\Visual Studio 2008\Templates下(請注意你的電腦配置與個人電腦配置中路徑的對應關係),可能系統會提示是否覆蓋,點擊確認以後咱們再在任何項目中建立新文件會看到下面的狀況,以下圖所示:.net
此時咱們能夠看到個人模板下能夠建立的新文件類型和系統的一摸同樣,若是此時咱們選擇建立的話,生成的文件內容也會和系統模板的同樣。爲了打造屬於咱們個性的代碼,咱們須要對個人模板進行改造。3d
舉例來講,假如咱們要改變系統默認生成的代碼,想在建立代碼時自動添加一些信息,好比咱們想讓默認生成的是public的,那麼能夠按照下面的步驟作:code
首先打開個人模板存放路徑,在周公這裏這個路徑是G:\My Documents\Visual Studio 2008\Templates\ItemTemplates(請注意你的可能與周公的不一樣),這個文件夾下存放的是包含VB.NET、C++及C#等新建項目的模板,若是咱們要改變的是C#文件的,請繼續打開C#文件的建立模板,在周公本本上這個路徑爲G:\My Documents\Visual Studio 2008\Templates\ItemTemplates\CSharp\Code\2052,在這個文件夾下有四個zip文件,名稱是Class.zip、CodeFile.zip、Interface.zip和NETCFv2-Class.zip,分別對應的是添加類、代碼文件、接口及.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文件。
好了,如今咱們能夠檢驗咱們的成果了。隨便打開一個項目,按照「添加」-「新建項」的步驟添加,在彈出的對話框中「個人模板」下選擇「類」(由於咱們剛剛改的就是個人模板中添加的類的模板),這時Visual Studio 2008按照模板生成的代碼以下:
從 上面的例子能夠看出選擇個人模板的項就會按照預約好的格式生成代碼,若是咱們對項目中的代碼有特殊格式要求的話,在這裏統必定製很是方便,至少周公之後會 用這種模板來寫公佈在博客上的代碼,由於周公注意到有很網站喜歡將別人博客上的文章中的連接信息和做者信息去掉,這事實上違反了做者的聲明。有時間的話我 們能夠針對每個項更改出本身的模板。
上面咱們僅僅演示了生成新文件的配置,其實咱們還能夠更改新生成項目的配置,按照前面的操做咱們添加新項目時也有個人模板選項,以下圖所示:
不過即便從個人模板中選擇建立新項目也和系統中的項目同樣,由於沒有通過任何特殊配置。咱們能夠修改G:\My Documents\Visual Studio 2008\Templates\ProjectTemplates\CSharp下的項目模板,它們一樣也是一個zip文件,好比咱們想要統一程序集信息,能夠修改這個zip文件中的assemblyinfo.cs文件的內容,這樣就不用每次都手動去修改程序集信息了。
經過上面的步驟以後可讓咱們很方便地定製了添加新項或者新項目的模板,這在公司中團隊開發中仍是至關有用的,也方便對代碼文件的格式的統一。
須要說明的是在編輯模板時會看到一個形如$time$、$rootnamespace$之類的東西,這些算是生成模板時用到的變量吧,在編輯模板時可使用哪些變量微軟沒有官方的資料,不過周公留意了一下,大概有以下:
Itemname
safeitemname
sateitemrootname
projectname
safeprojectname
rootnamespace
guid[1-10]
time
year
username
userdomain
machinename
clrversion
targetframeworkversion
registeredorganization
wizarddata
可能有些人對上面的變量名不是太理解,實際上是有規律的,都是一到幾個單詞的全稱,只不過沒有遵循咱們日常所說的Camel和Pascal命 名法則罷了(你們能夠看的出不遵照命名法則確實難讀多了),知道這個規律以後這些變量的用途你們都能顧名思義了,若是確實不能也能根據最終生成的代碼推斷 出它的用法的。此外,若是以爲每次都要從「個人模板下」選擇很麻煩的話,能夠用更改後自定義模板替換系統中的模板。在剛剛編輯模板時咱們還看到了一些簡單 邏輯,好比當使用的項目.NET Framework版本爲3.5時會自動使用System.Linq命名空間,咱們還能夠模範系統模板中的邏輯增長更多更符合我的或者公司須要的邏輯。
周公
2010-06-20