如何在Visual Studio 2022中使用自定义.NET Core模板
问题解答
不需要制作VSIX包,也不需要上传到Visual Studio Marketplace,你现在的模板在VS2022中不显示,核心原因是配置不符合新版VS的模板识别规则,按以下步骤调整即可正常显示:
核心配置修正
- 首先改对配置文件名:你现在用的
ide.host.json是旧版本实验性功能的命名,VS2022正式版识别的VS专属配置文件路径是.template.config/vs-2022.3.host.json,你之前用的vs-2017.3.hostschema对应的旧配置,不会被新版VS扫描加载。 - 补全host.json的必填字段,最小可用配置参考:
{ "$schema": "http://json.schemastore.org/vs-2022.3.host", "order": 0, "icon": "music_note_64.png", "language": "C#", "tags": { "type": "project", "language": "C#", "platform": "ASP.NET Core" }, "symbolInfo": [] }
- 检查根模板配置文件
.template.config/template.json的必填项:- 必须配置全局唯一的
identity字段 - 必须配置
shortName字段(你当前设的id-provider没问题,不用改) - 必须在tags里声明
"type": "project"、"language": "C#",和host.json里的标签保持一致 - 明确写清楚模板支持的目标框架,比如
"frameworks": ["net6.0", "net7.0", "net8.0"],VS会根据本地安装的SDK匹配显示对应模板 - 不要加
"hidden": true配置,加了这个标记的模板不管怎么调都不会在VS界面显示
- 必须配置全局唯一的
清缓存验证
配置改完之后,执行下面的命令重置本地模板缓存,不然旧缓存会导致新配置不生效:
dotnet new --uninstall MintPlayer.AspNetCore.IdentityServer.Templates dotnet new --debug:reinit dotnet new --install MintPlayer.AspNetCore.IdentityServer.Templates
命令跑完之后关掉所有开着的Visual Studio窗口,重新开VS2022,在新建项目界面搜id-provider就能找到你的模板了。
疑问说明
- 不需要做VSIX包:VSIX是VS2019及更早版本分发模板的必需格式,从VS2022 17.4版本开始,已经原生支持直接读取通过
dotnet new安装的NuGet格式模板,额外制作VSIX只会增加维护成本。 - 不需要上传到Visual Studio Marketplace:VS会扫描本地已经安装的所有dotnet new模板,不管你的模板包是从公网NuGet源装的、本地nupkg文件装的还是直接从本地文件夹装的,只要配置符合规范就会被识别出来。
踩坑提醒
- 模板图标建议用64*64尺寸的PNG文件,写路径的时候是相对于
.template.config文件夹的相对路径,注意文件名大小写要匹配,别写错。 - 如果是Web类模板,记得在template.json的tags里加
"frameworkTags": ["aspnetcore"]标签,不然模板不会出现在Web分类下,容易漏搜。

内容的提问来源于stack exchange,提问作者Pieterjan
相关产品推荐
相关产品推荐

