我們編寫項目的時候,很多時候都是在寫重復代碼,比如一個比較完整的框架,然后下面有很多代碼都是重復的Copy,其實我們可以利用Visual Studio的模板替我們干這些活,我們只要關注項目具體的業務就可以了;
下面我們開始:
1、模板類別
項目模板、項模板
其中,項目模板是創建項目用的,項模板是創建項用的
項目模板:

項模板:

下面我們創建項目模板
首先,將要制作成模板的項目打開,選中項目,點擊文件-》導出項目模板,彈出導出模板向導

然后填寫相關信息,點擊完成,這樣就導出模板成功了
現在,很關鍵的一步就是修改導出的模板
解壓剛才導出zip文件
打開.vstemplate文件
<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project"> <TemplateData> <Name>ConsoleApplication2</Name> <Description><沒有可用的說明></Description> <ProjectType>CSharp</ProjectType> <ProjectSubType> </ProjectSubType> <SortOrder>1000</SortOrder> <CreateNewFolder>true</CreateNewFolder> <DefaultName>ConsoleApplication2</DefaultName> <ProvideDefaultName>true</ProvideDefaultName> <LocationField>Enabled</LocationField> <EnableLocationBrowseButton>true</EnableLocationBrowseButton> <Icon>__TemplateIcon.ico</Icon> </TemplateData> <TemplateContent> <Project TargetFileName="ConsoleApplication2.csproj" File="ConsoleApplication2.csproj" ReplaceParameters="true"> <ProjectItem ReplaceParameters="true" TargetFileName="CodeTimer.cs">CodeTimer.cs</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="Program.cs">Program.cs</ProjectItem> <Folder Name="Properties" TargetFolderName="Properties"> <ProjectItem ReplaceParameters="true" TargetFileName="AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem> </Folder> </Project> </TemplateContent> </VSTemplate>
TemplateData節點是模板的說明,Name:模板名稱,Description:模板描述,ProjectType:項目類型,
修改TemplateContext節點
TargetFileName:模板生成的文件名稱 (如:TargetFileName="$safeprojectname$.csproj")
File:模板文件
ReplaceParameters:是否替換占位符,微軟定義的占位符見附錄,當然還可以自定義占位符
修改完成之后
<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project"> <TemplateData> <Name>ConsoleApplication2</Name> <Description><沒有可用的說明></Description> <ProjectType>CSharp</ProjectType> <ProjectSubType> </ProjectSubType> <SortOrder>1000</SortOrder> <CreateNewFolder>true</CreateNewFolder> <DefaultName>ConsoleApplication2</DefaultName> <ProvideDefaultName>true</ProvideDefaultName> <LocationField>Enabled</LocationField> <EnableLocationBrowseButton>true</EnableLocationBrowseButton> <Icon>__TemplateIcon.ico</Icon> </TemplateData> <TemplateContent> <Project TargetFileName="$safeprojectname$.csproj" File="ConsoleApplication2.csproj" ReplaceParameters="true"> <ProjectItem ReplaceParameters="true" TargetFileName="$safeprojectname$CodeTimer.cs">CodeTimer.cs</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="Program.cs">Program.cs</ProjectItem> <Folder Name="Properties" TargetFolderName="Properties"> <ProjectItem ReplaceParameters="true" TargetFileName="AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem> </Folder> </Project> </TemplateContent> </VSTemplate>
打開用記事本csproj項目文件
修改ItemGroup
<ItemGroup> <Compile Include="$safeprojectname$CodeTimer.cs" /> <Compile Include="Program.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup>
修改完成之后壓縮成Zip文件,放到下面的目錄,在vs里面就可以使用剛才創建的模板了
(vs安裝位置)\Visual Studio 2013\Templates\ProjectTemplates

附錄:
| 參數 |
描述 |
|---|---|
| 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 格式表示的當前時間。 |
| SpecificSolutionName |
解決方案的名稱。 當“創建解決方案的目錄”被選中,SpecificSolutionName 具有解決方案的名稱。當“創建解決方案的目錄”沒有被選中,SpecificSolutionName是空。 |
| userdomain |
當前的用戶域。 |
| username |
當前的用戶名。 |
| webnamespace |
當前網站的名稱。 在 Web 窗體模板中使用此參數以確保類名稱是唯一的。 如果網站位於 Web 服務器的根目錄下,則此模板參數將解析為 Web 服務器的根目錄。 |
| year |
以 YYYY 格式表示的當前年份。 |
