文章目錄
- 1 問題的引入
- 2 環境描述
- 3知識準備
- 4 添加各模板
- 5 結束語
- 6 參考資料
1 問題的引入
在做項目的時候,需要代碼規範,版本資訊不可或缺,但是每次在檔案頭COPY版本資訊很麻煩,而且也不太容易控制。為了更好、更規範的去完成項目,需對專案檔做統一的格式來處理。
2 環境描述
OS: WINDOWS 2003
開發環境:VS2008
語言:C#
架構:C/S B/S
3知識準備3.1 VS項目模板及項目範本位置
預設情況下,與產品一起安裝的模板位於以下位置:
- /Common7/IDE/ItemTemplates/語言/地區設定/
- /Common7/IDE/ProjectTemplates/語言/地區設定/
(此處為微軟提供位置,實際處理中與此資訊有所出入,具體位置見下文)
3.2 VS模板介紹
一個模板的例子:
<VSTemplate Type="Project" Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005"> <TemplateData> <Name>My template</Name> <Description>A basic starter kit</Description> <Icon>TemplateIcon.ico</Icon> <ProjectType>CSharp</ProjectType> </TemplateData> <TemplateContent> <Project File="MyStarterKit.csproj"> <ProjectItem>Form1.cs<ProjectItem> <ProjectItem>Form1.Designer.cs</ProjectItem> <ProjectItem>Program.cs</ProjectItem> <ProjectItem>Properties/AssemblyInfo.cs</ProjectItem> <ProjectItem>Properties/Resources.resx</ProjectItem> <ProjectItem>Properties/Resources.Designer.cs</ProjectItem> <ProjectItem>Properties/Settings.settings</ProjectItem> <ProjectItem>Properties/Settings.Designer.cs</ProjectItem> </Project> </TemplateContent> </VSTemplate> |
3.2.1 VSTemplate元素
VSTemplate 元素是 .vstemplate 檔案的根項目,其屬性如下:
屬性 |
說明 |
Type |
將模板標識為項目模板或項目範本。此屬性的值可以為 Project 或 Item |
Version |
指定模板的版本號碼。Visual Studio 2005 中的模板的 Version 屬性值為 2.0.0 |
子項目
元素 |
說明 |
TemplateData |
必選元素。指定將此模板分類的資料,並定義此模板在“建立項目”或“添加新項”對話方塊中的顯示方式。 |
TemplateContent |
必選元素。指定模板的內容。 |
WizardExtension |
可選的元素 |
WizardData |
可選的元素 |
3.2.2 模板參數
所有模板都支援在對模板進行執行個體化時進行參數替換,以替換關鍵參數,如類名和命名空間。當使用者在“建立項目”或“添加新項”對話方塊中單擊“確定”時,這些參數將由後台啟動並執行模板嚮導替換。
模板參數以 $參數$ 格式進行聲明。如:$safeprojectname$。
模板的保留參數如下表:
參數 |
說明 |
clrversion |
公用語言運行庫 (CLR) 的目前的版本。 |
GUID [1-10] |
用於替換專案檔中的項目 GUID 的 GUID。最多可以指定 10 個唯一的 GUID(例如,guid1))。 |
itemname |
使用者在添加新項對話方塊中提供的名稱。 |
machinename |
當前的電腦名稱(例如,Computer01) |
projectname |
使用者在建立項目對話方塊中提供的名稱。 |
registeredorganization |
HKLM/Software/Microsoft/Windows NT/CurrentVersion/RegisteredOrganization 中的登錄機碼值 |
rootnamespace |
當前項目的根命名空間。此參數用於替換正向項目中添加的項中的命名空間 |
safeitemname |
使用者在“添加新項”對話方塊中提供的名稱,名稱中移除了所有不安全的字元和空格 |
safeprojectname |
使用者在“建立項目”對話方塊中提供的名稱,名稱中移除了所有不安全的字元和空格。 |
time |
以 DD/MM/YYYY 00:00:00 格式表示的目前時間 |
userdomain |
當前的使用者域 |
username |
當前的使用者名稱 |
webnamespace |
當前網站的名稱。在 Web Form模板中使用此參數以確保類名稱是唯一的。如果網站位於 Web 服務器的根目錄下,則此模板參數將解析為 Web 服務器的根目錄 |
year |
以 YYYY 格式表示的當前年份 |
4 添加各模板
上面的一些知識點可能會有些淩亂,但都是在後文中會用到的,所以上面的要瞭解下。
添加模板分為兩類,一類是建立項目時的項目模板,一類是在項目中添加新項時的項目範本。其步驟如下:
● 製作模板
● 將模板COPY到指定位置
● 重設VS環境
4.1 添加項目模板
此處將以做一個C/S的WINFORM模板來說明添加一個模板的操作方法,其他項目模板類似,只有路徑上有所不同,路徑不同的會給出相關路徑。
4.1.1 製作模板
MICRO提供了製作模板的方法,http://msdn.microsoft.com/zh-cn/library/xkh1wxd8.aspx,但我在操作時沒有按照這樣的方法來處理,我的作法是將已有的模板COPY出來,修改,放到新的檔案夾,步驟如下:
● 將/Common7/IDE/ProjectTemplates/CSharp/Windows/2052下的WindowsApplication.zip檔案COPY出來。
● 解壓,1
圖1 windowsApplication.zip
● 修改form1,修改前2,修改後3,注意圖中紅色的位置即3.2.2中提到的模板參數
圖2 form1.cs修改前
圖3 form1.cs修改後
● 同樣修改Program.CS,assemblyinfo.cs檔案
● 修改csWindowsApplication.vstemplate,4
圖4 csWindowsApplication.vstemplate
● 修改windowsapplication.csproj,因為我修改了program.c的檔案名稱,才需修改此檔案,如無修改檔案名稱則不需修改此檔案。
● 將所有檔案壓縮為WindowsApplication.zip,注意壓縮時不能加檔案夾,5
圖5 壓縮檔
至此,WINFORM的項目模板已做好。
4.1.2 將模板COPY到指定位置
我的做法是將/Common7/IDE/ProjectTemplates/CSharp/Windows下的所有內容COPY到一個新的檔案夾,如 COMP WINDOWS,刪除COMP WINDOWS/2052下的所有內容,將上文產生的模板放在2052目錄下,將COMP WINDOWS COPY到/Common7/IDE/ProjectTemplates/CSharp/
4.1.3 重設VS環境
開啟Visual Studio 2008 命令列工具,執行devenv /setup,其路徑如:
圖6:VISUAL STUDIO 2008工具開啟檔案
你可以通過這樣的方法根據需要做自己的模板(WINFORM程式)。看一下效果:開啟VS,建立、建立項目,出現如:
圖7:最終效果
4.1.4 添加B/S項目模板
上文是添加C/S項目模板的方法,添加B/S項目模板的方法與其類似,有區別的地方在於COPY模板的地方,B/S將產生的模板直接COPY到 /Common7/IDE/ProjectTemplates/CSharp/Web/2052即可,注意要將壓縮檔改名,以免覆蓋原有的檔案。
4.2 添加項目範本
製作過程與4.1同,要注意的地方是項目範本的位置。
C/S項目範本的位置:/Common7/IDE/ItemTemplates/CSharp/Code/2052 類模板位置;/Common7/IDE/ItemTemplates/CSharp/Windows Forms/2052 表單模板位置
B/S模板位置:/Common7/IDE/ItemTemplates/Web/CSharp/2052,包括類、ASP表單、WEB服務、使用者控制項等均在此處。
COPY的方式同4.1.4
最終的:
圖8:添加新項
圖9:新加類的
5 結束語
至此,所有的添加工作完成,VS模板可以自訂參數,但由於在此處沒有太大的用處,故未使用。
值得注意的地方為:
● 要注意壓縮為ZIP。
● 如果是英文版的話,要將文中的2502目錄改為1033。(此條未測試,是我估計的)
6 參考資料
名稱 |
出處 |
建立項目模板 |
http://msdn.microsoft.com/zh-cn/library/xkh1wxd8.aspx |
手動建立項目模板 |
http://msdn.microsoft.com/zh-cn/library/ms185291.aspx |
替換模板中的參數 |
http://msdn.microsoft.com/zh-cn/library/ms185311.aspx |
尋找和組織項目模板和項目範本 |
http://msdn.microsoft.com/zh-cn/library/y3kkate1.aspx |
VSTemplate 元素(Visual Studio 模板) |
http://msdn.microsoft.com/zh-cn/library/31cdwx28%28VS.80%29.aspx |
模板參數 |
http://msdn.microsoft.com/zh-cn/library/eehb4faa.aspx |
向模板傳遞自訂參數 |
http://msdn.microsoft.com/zh-cn/library/ms247063.aspx |
|
作者:xzavier 出處:http://blog.csdn.net/qiaozhiwei 本文著作權歸作者和CSDN共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連,否則保留追究法律責任的權利。 |