VS2019自定义模板未显示

VS2019 Custom template not shown

我已经为包含两个项目的 VS2019 创建了一个自定义模板。下面是我的 root.vstemplate 文件

<VSTemplate Version="3.0.0" Type="ProjectGroup" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
  <TemplateData>
    <Name>Asp.Net Core Template EF Core</Name>
    <Description>Asp.Net Core 3.1 Boilerplate template</Description>
    <ProjectType>CSharp</ProjectType>
    <ProjectSubType>
    </ProjectSubType>
    <SortOrder>1000</SortOrder>
    <CreateNewFolder>true</CreateNewFolder>
    <DefaultName>Asp.Net Core Template EF Core</DefaultName>
    <ProvideDefaultName>true</ProvideDefaultName>
    <LocationField>Enabled</LocationField>
    <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
    <Icon>logo.png</Icon>
  </TemplateData>
  <TemplateContent>
    <ProjectCollection>
      <ProjectTemplateLink ProjectName="AspNet Core Ef Core">
        src\AspNetCore3EfCoreTemplate\MyTemplate.vstemplate
      </ProjectTemplateLink>
      <ProjectTemplateLink ProjectName="AspNet Core Ef Core Web">
        src\AspNetCore3EfCoreTemplate.Web\MyTemplate.vstemplate
      </ProjectTemplateLink>
    </ProjectCollection>
  </TemplateContent>
</VSTemplate>

我按照此 link 的说明操作,但是当我尝试在 VS2019 中创建新项目时,我的模板没有显示。有人知道为什么会这样吗?

也许这会有所帮助。 https://blog.jayway.com/2015/03/13/visual-studio-how-to-create-a-solution-template-with-multiple-projects/

原始文档通常会遗漏一个或两个在您制作大量模板后看起来很明显的步骤。

I followed the instructions of this link but my template is not shown when I try to create a new item in VS2019. Anyone knows why is this happening?

对于自定义项目模板,新的VS2019创建项目UI无法通过过滤器找到自定义项目模板,而这些模板实际上存在于其中。

All LangagesAll PlatformsAll Project Types 以及搜索框失去了过滤自定义项目模板的能力,这是 known issue in VS2019. But it still happens in the latest version VS2019 16.4.2. If you want to solve this annoying problem, you can report an issue to DC Forum 报告此异常行为以寻求支持.这可能是一个漫长的过程,或者您可以尝试以下我的建议:

建议

1)不要在VS2019 Project中使用任何滤镜UI然后拖到所有模板的底部找到自定义模板,一般插入在后面所有默认模板。

这张图片显示在所有模板的底部。

2) 改为使用 VS2017 没有错误。

更新 1

我已经用你的进一步信息创建并在我这边测试没有任何错误,我的环境:

win10企业1903; VS2019社区16.4.2

我的步数:

1) 我在同一个解决方案中创建了两个项目: 一个 Net Core 3.1 ClassLibrary 项目 和一个 ASP.NET Core 3.1 Web 应用程序项目.

2) 然后单击项目菜单中的导出模板..并将这些项目导出为项目模板分别.

3) 打开文件夹并将它们解压缩到名为 src 的同一个文件夹中。

这显示了 src 文件夹中的两个解压缩项目文件夹

然后就是这个文件夹的最终形式了,src文件夹包含了如上图所示的两个工程文件夹

4) root.vstemplate 是您提供的代码。如您所说,项目模板名为 Asp.Net Core Template EF Core。之后,我把这两个文件压缩成一个叫multiple projects template的包,然后把这个zip文件放到这个路径下C:\Users\xxx\Documents\Visual Studio 2019\Templates\ProjectTemplates.

5)然后我关闭VS Instance然后重启VS并清除所有过滤器然后将项目模板拉到底部,然后在底部查找一个名为 Asp.Net Core Template EF Core.

的模板

> 我在我这边找到了这个模板,如果你没有看到这个,请 repair VS 然后禁用扩展中的任何第三方扩展- ->Manage Extension 菜单,防止干扰VS。另外,由于你的VS是16.4.1,你可以试试更新到16.4.2。

更新 2

根据你的样本,我想我找到了问题所在。问题是 root.template 找不到包含的两个项目:

你把root.template放在Src文件夹里,root.vstemplate文件写这些:

src\ClassLibrary1\MyTemplate.vstemplate

src\WebApplication3\MyTemplate.vstemplate

它使用相对路径来查找这些文件,而您的root.vstemplate所在的当前路径没有src所以它找不到。

解决办法是把root.vstemplateSRC文件夹放在同一个目录下,然后把这两个压缩。之后把这个Multiple.zip放到C:\Users\xxx\Documents\Visual Studio 2019\Templates\ProjectTemplates.

希望对您有所帮助。

Visual Studio2019年使用标签筛选项目。默认情况下,当您导出项目模板时,.vstemplate 文件不包含所需的标签。您需要编辑 .vstemplate 文件并在 TemplateData 部分添加以下标签(即在 <TemplateData></TemplateData> 之间)并将这些值替换为适合您模板的值:

<LanguageTag>Language</LanguageTag>
<PlatformTag>Platform</PlatformTag>
<ProjectTypeTag>Type</ProjectTypeTag>

例如,这是我的自定义模板之一的 TemplateData

<TemplateData>
  <Name>MyCaliburnMicroTemplate</Name>
  <Description>Caliburn Micro template I set up with basic localisation, logging, settings and themes implemented.</Description>
  <ProjectType>CSharp</ProjectType>
  <ProjectSubType>Windows</ProjectSubType>
  <LanguageTag>CSharp</LanguageTag>
  <PlatformTag>Windows</PlatformTag>
  <ProjectTypeTag>Desktop</ProjectTypeTag>
  <SortOrder>1000</SortOrder>
  <CreateNewFolder>true</CreateNewFolder>
  <DefaultName>MyCaliburnMicroTemplate</DefaultName>
  <ProvideDefaultName>true</ProvideDefaultName>
  <LocationField>Enabled</LocationField>
  <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
  <Icon>__TemplateIcon.ico</Icon>
</TemplateData>

我也将 <ProjectSubType> 设置为 Windows,但我没有测试过这是否有任何区别。

这是我的 'Create a new project' window 的照片,过滤器设置为 C#、Windows 和桌面:

请注意,标签现在显示在我的项目模板的描述下方。我目前正在使用 Visual Studio Community 2019 版本 16.4.3,但尚未在任何其他版本上测试过。

这就是我为使其工作所做的工作: 创建模板的 zip 文件后,我将其解压缩。 然后我将文件夹复制到“ProjectTamplates”文件夹。

我可以通过这种方式基于我的模板创建一个新项目。