如何为Visual Studio 2019自定义项目模板添加语言等分类标签
解决Visual Studio 2019中自定义模板缺失语言/平台标签的问题
这个问题本质是VS2019对项目模板的元数据要求比VS2017更严格——VS2017会自动推断部分标签,但2019需要你明确在模板配置里声明这些关键信息。下面是具体的解决步骤:
1. 编辑模板的.vstemplate配置文件
找到你自定义模板对应的.vstemplate文件(如果是VSIX扩展里的模板,可在扩展项目的模板目录找到;如果是独立模板,解压模板压缩包就能看到),在<TemplateData>节点下添加以下核心元数据标签:
- 语言标签:明确指定模板所属语言,让C#筛选器能精准识别它
<Language>C#</Language> - 项目类型标签:关联到VS的C#分类目录
<ProjectType>CSharp</ProjectType> - 平台标签:根据你的模板目标平台填写(比如Windows、Web、Azure等,支持多个平台用逗号分隔)
<Platform>Windows</Platform>
完整的<TemplateData>节点示例:
<TemplateData> <Name>我的自定义C#业务模板</Name> <Description>快速搭建符合团队规范的C#业务项目</Description> <Language>C#</Language> <ProjectType>CSharp</ProjectType> <Platform>Windows</Platform> <DefaultName>MyBusinessProject</DefaultName> <Icon>TemplateIcon.ico</Icon> </TemplateData>
如果你的模板是多项目模板,记得每个子项目的.vstemplate文件也要添加这些标签,不然子模板同样会出现筛选失效的问题。
2. 检查VSIX扩展的manifest配置
如果你的模板是打包在VSIX扩展里的,打开source.extension.vsixmanifest文件,确保<Assets>节点下的模板资产配置正确关联了C#分类:
<Assets> <Asset Type="Microsoft.VisualStudio.ProjectTemplate" d:Source="File" Path="Templates\CSharp\MyBusinessTemplate.vstemplate" d:VsixSubPath="Templates\CSharp" /> </Assets>
这里的Path和d:VsixSubPath要对应你模板在扩展项目里的目录结构,确保VS能正确将模板归类到C#目录下。
3. 清理VS模板缓存(推荐操作)
有时候VS会缓存旧的模板信息,修改配置后需要手动刷新缓存:
- 关闭Visual Studio 2019
- 删除目录:
%LOCALAPPDATA%\Microsoft\VisualStudio\16.0_<你的VS实例ID>\ProjectTemplatesCache(实例ID是一串随机字符,找到对应16.0开头的目录即可) - 重新打开VS,它会自动重新加载所有模板
完成以上操作后,你的自定义模板应该就能在C#分类下正常显示,语言、平台等标签也会正确展示,筛选功能也能正常工作了。
内容的提问来源于stack exchange,提问作者golf89




