VSIX打包的ASP.NET Core 2 Web模板仅生成空白项目求助
解决VSIX模板生成空白ASP.NET Core 2项目的问题
我处理过不少这类VSIX模板的坑,结合你的情况,给你几个针对性的修复步骤,应该能解决空白项目的问题:
1. 检查.vstemplate的项目文件引用配置
你的.vstemplate很可能没正确指定要包含的项目文件。打开模板项目里的.vstemplate,确保<Project>节点指向正确的.csproj,同时要逐个添加<ProjectItem>来包含Controllers、Views、wwwroot这些核心目录和文件,比如:
<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project"> <TemplateData> <!-- 保留你的模板元数据 --> </TemplateData> <TemplateContent> <Project File="ExampleAspNetCoreTemplate.csproj" ReplaceParameters="true"> <!-- 必须明确列出要包含的文件/目录 --> <ProjectItem ReplaceParameters="true" TargetFileName="Controllers\HomeController.cs">Controllers\HomeController.cs</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="Views\Home\Index.cshtml">Views\Home\Index.cshtml</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="wwwroot\css\site.css">wwwroot\css\site.css</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="appsettings.json">appsettings.json</ProjectItem> <!-- 其他必要文件都要加进去 --> </Project> </TemplateContent> </VSTemplate>
如果没加这些<ProjectItem>,VS打包VSIX时会遗漏文件,生成的自然是空白项目。
2. 确认所有文件的"包含在VSIX中"属性
右键模板项目里的每个文件(包括.csproj、各个目录下的文件),打开属性面板,把包含在VSIX中设置为True。要是这个选项是False,这些文件根本不会被打包进VSIX,生成项目时当然看不到内容。
3. 处理ASP.NET Core的特殊配置文件
launchSettings.json、appsettings.json这类配置文件也必须添加到<ProjectItem>里,而且如果你的模板需要替换命名空间、项目名称这类参数,要确保文件里的占位符和.vstemplate里的参数对应上,同时ReplaceParameters要设为true。
4. 清理缓存后重新打包
有时候旧的缓存会搞事情,按这个流程来:
- 关掉所有Visual Studio实例
- 删除VSIX项目下的
bin和obj目录 - 重新打开项目,生成并重新打包VSIX
- 先卸载之前装的旧模板,再安装新的VSIX文件
5. 验证模板的项目类型设置
确保.vstemplate的<TemplateData>里的<ProjectType>是Web,<ProjectSubType>是ASP.NET Core,这样VS才能正确识别为Web项目模板:
<TemplateData> <Name>AspNet Core 2 Web App Template</Name> <Description>ASP.NET Core 2 Web Application Template</Description> <ProjectType>Web</ProjectType> <ProjectSubType>ASP.NET Core</ProjectSubType> <!-- 其他元数据 --> </TemplateData>
按这些步骤调整后,再试一次生成项目,应该就能得到带有完整文件的ASP.NET Core 2应用了。
内容的提问来源于stack exchange,提问作者Drew Brasher
相关产品推荐
相关产品推荐

