vs-项目模板创建和使用
一、使用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新建项目中看到自己的模板
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)