一、使用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新建项目中看到自己的模板