Visual Studio 2019 年项目模板仅针对某些类型的项目显示

Visual Studio 2019 Item Template only showing up for certain types of projects

我创建并导入了一个项目模板,一个用于 Visual Studio 的 C# class 模板。

当我打开一个 C# Class 库项目时,我可以使用 Add > Class > UniqueIdentifier 从这个模板创建一个新项目。这按预期工作。

当我打开一个 ASP .Net Core MVC 项目并尝试相同的选项时,该模板没有出现在列表中。这不是预期的。

我希望这个项目模板出现在我所有项目的 Add > Class 菜单中。我曾尝试修改 .vstemplate 文件,但我只能在我尝试过的两种项目类型中的不同类型中切换它。我无法让它出现在多种类型的项目中。

这是 .vstemplate 文件的 TemplateData 部分的当前内容:

  <TemplateData>
    <DefaultName>UniqueIdentifier.cs</DefaultName>
    <Name>UniqueIdentifier</Name>
    <Description>My Description</Description>
    <ProjectType>CSharp</ProjectType>
    <TemplateID>Microsoft.CSharp.Class</TemplateID>
    <Icon>__TemplateIcon.png</Icon>
    <PreviewImage>__PreviewImage.PNG</PreviewImage>
    <ShowByDefault>true</ShowByDefault>
  </TemplateData>

根据我的测试,您可以参考以下步骤制作物品模板。

首先,您可以将 class 导出到 C# Class 库项目中的项模板。

其次,需要extra压缩文件,将.vstemplate文件修改为如下内容:(粗体代码需要添加)

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
  <TemplateData>
    <DefaultName>TestClasslibrary.cs</DefaultName>
    <Name>TestClasslibrary</Name>
    <Description>&lt;No description available&gt;</Description>
    <ProjectType>CSharp</ProjectType>
    <SortOrder>10</SortOrder>
    <Icon>__TemplateIcon.ico</Icon>
    **<TemplateGroupID>AspNetCore</TemplateGroupID>**
  </TemplateData>
  <TemplateContent>
    <References>
      <Reference>
        **<Assembly>Microsoft.CSharp</Assembly>**
      </Reference>
    </References>
    <ProjectItem SubType="" TargetFileName="$fileinputname$.cs" ReplaceParameters="true">Class1.cs</ProjectItem>
  </TemplateContent>
</VSTemplate>

三、修改文件后,请替换zip文件中的.vstemplate文件

第四,请将您的 zip 文件放在路径 C:\Users\username\Documents\Visual Studio 2019\Templates\ItemTemplates 中。 像下面一样,TestClasslibrary.zip 被替换为 zip 文件。

最后,请重新启动您的 visual studio 并添加所需的项目模板。

注:当前项目是asp.netcore mvc。我也用winform、wpf、console和web app测试过,都可以成功添加模板。