一、使用dotnet命令創建(適用於.NET Core,可以創建包含任意數量個項目的模板,但不會出現在vs的新建項目模板中)
官方文檔:https://docs.microsoft.com/zh-cn/dotnet/core/tools/custom-templates
- 拷貝所有要用作模板的項目到新建文件夾
- 在新建文件夾下添加./.template.config/template.json 文件
- 編輯template.json文件,內容如下:
1 { 2 "$schema": "http://json.schemastore.org/template", 3 "author": "Travis Chau", 4 "classifications": [ "Common", "Console" ], 5 "identity": "AdatumCorporation.ConsoleTemplate.CSharp", 6 "name": "Adatum Corporation Console Application", 7 "shortName": "adatumconsole" 8 }
- 在新建文件夾路徑下使用dotnet命令創建模板:dotnet new -i .
- 從模板新建項目: dotnet new <模板名> -n <用來替換模板名的名稱> -o <新項目路徑>
- 卸載模板:dotnet new -u <模板路徑>
二、vs》項目》導出模板(適用於多種語言,可在vs的新建項目模板中使用)
官方文檔:https://docs.microsoft.com/zh-cn/visualstudio/ide/creating-project-and-item-templates?view=vs-2017
-
單個項目模板vs導出:
項目》導出模板
vs的新建項目的用戶模板的存儲路徑:%USERPROFILE%\Documents\Visual Studio 2017\Templates\ProjectTemplates
模板的配置文件(在導出模板生成的壓縮文件中):MyTemplate.vstemplate
模板參數:https://docs.microsoft.com/zh-cn/visualstudio/ide/template-parameters?view=vs-2017 - 多個項目模板vs導出:
每個項目單獨導出模板
創建根項目文件夾
將全部模板解壓到根項目文件夾
根項目文件夾下創建MultiProjectTemplate.vstemplate文件
MultiProjectTemplate.vstemplate內容示例如下:
1 <VSTemplate Version="2.0.0" Type="ProjectGroup" 2 xmlns="http://schemas.microsoft.com/developer/vstemplate/2005"> 3 <TemplateData> 4 <Name>Template</Name> 5 <Description>An example of a multi-project template</Description> 6 <Icon>__TemplateIcon.ico</Icon> 7 <ProjectType>CSharp</ProjectType> 8 </TemplateData> 9 <TemplateContent> 10 <ProjectCollection> 11 <SolutionFolder Name="1-Presentation"> 12 <ProjectTemplateLink ProjectName="$safeprojectname$.Presentation.WebAPI" CopyParameters="true"> 13 Template.Presentation.WebAPI\MyTemplate.vstemplate 14 </ProjectTemplateLink> 15 </SolutionFolder> 16 <SolutionFolder Name="2-Application"> 17 <ProjectTemplateLink ProjectName="$safeprojectname$.Application.IService" CopyParameters="true"> 18 Template.Application.IService\MyTemplate.vstemplate 19 </ProjectTemplateLink> 20 <ProjectTemplateLink ProjectName="$safeprojectname$.Application.Service" CopyParameters="true"> 21 Template.Application.Service\MyTemplate.vstemplate 22 </ProjectTemplateLink> 23 </SolutionFolder> 24 <SolutionFolder Name="3-Domain"> 25 <ProjectTemplateLink ProjectName="$safeprojectname$.Domain.IService" CopyParameters="true"> 26 Template.Domain.IService\MyTemplate.vstemplate 27 </ProjectTemplateLink> 28 <ProjectTemplateLink ProjectName="$safeprojectname$.Domain.Service" CopyParameters="true"> 29 Template.Domain.Service\MyTemplate.vstemplate 30 </ProjectTemplateLink> 31 </SolutionFolder> 32 <SolutionFolder Name="4-Infrastructure"> 33 <ProjectTemplateLink ProjectName="Template.Infrastructure.Show" CopyParameters="true"> 34 Template.Infrastructure.Show\MyTemplate.vstemplate 35 </ProjectTemplateLink> 36 </SolutionFolder> 37 </ProjectCollection> 38 </TemplateContent> 39 </VSTemplate>
使用$ext_safeprojectname$修改所有項目文件中需要應用根模板的應用名的地方(.csproj項目文件,.cs代碼文件以及.vstemplate模板文件)
最后將修改好的模板重新打包放至用戶模板的存儲路徑,即可在vs新建項目中看到自己的模板
