【问题标题】:Visual Studio 2013 Custom project Web Template does not displayedVisual Studio 2013 自定义项目 Web 模板不显示
【发布时间】:2015-07-16 08:55:45
【问题描述】:

我正在 Visual Studio 2013 Update 4 上为 Web 创建一个项目模板。
我创建了一个“C# 项目模板”类型的项目。
我将 vstemplate 文件编辑为:(如:https://msdn.microsoft.com/en-us/library/ms171386.aspx 所述)

 <ProjectType>Web</ProjectType>
 <ProjectSubType>CSharp</ProjectSubType>

然后我添加了一个 vsix 项目并将其添加为资产,即模板项目。 这是 xml 编辑器中的 vsixmanifest 资产部分:

<Assets>
    <Asset Type="Microsoft.VisualStudio.ProjectTemplate" d:Source="Project" d:ProjectName="MyTestProjectTemplate" d:TargetPath="|MyTestProjectTemplate;TemplateProjectOutputGroup|" Path="ProjectTemplates" d:VsixSubPath="ProjectTemplates" />
</Assets>

如果我将 ProjectType 签名为 CSharp,则项目模板列在“CSharp”下,但是当它被列为上面描述的 web 时,它根本不会显示。
有什么想法吗?

【问题讨论】:

    标签: visual-studio


    【解决方案1】:

    我希望它会对某人有所帮助。
    你必须设置 vstemplate:

    <ProjectType>CSharp</ProjectType>
    <TemplateGroupID>Web</TemplateGroupID>
    

    在 vstemplate 文件属性 (F4)(解决方案资源管理器)中,您必须将类别设置为 web。
    如果您要检查编译结果输出,现在是:

     bin\Debug\ProjectTemplates\CSharp\Web\1033\<Your Template Zip> 
    

    查看模板项目的csproj文件,你会看到:

    <ItemGroup>
          <VSTemplate Include="MyTestProjectTemplate.vstemplate">
               <SubType>Designer</SubType>
               <OutputSubPath>Web</OutputSubPath>
          </VSTemplate>
     </ItemGroup>
    

    这是 Category-> Web 结果。 (我想知道为什么我在 vstemplate 文件中没有看到这个定义影响它......所以这就是答案。它是 csproj 文件中的定义)。
    将 vsix 和项目添加为项目模板资产,它按预期工作。
    当我们了解问题是模板 zip 所在的路径时,它会简单得多,并且也可以为多个项目模板解决。

    现在是多项目模板!

    在这种情况下,您有一个 zip 文件,其中包含每个包含的项目的根 vstemplate 和子文件夹。

    1. vstemplate 根文件必须使用以下文件签名:

       <ProjectType>CSharp</ProjectType>
       <TemplateGroupID>Web</TemplateGroupID>
      
    2. 在 vsix 项目文件夹中,您必须添加以下文件夹:(关闭 Visual Studio 并在 Windows 中的 Visual Studio 之外执行此操作)。

      ProjectTemplates\CSharp\Web\1033
      
    3. 在文件夹 1033 下添加您的模板 zip。(在 Visual Studio 之外)

    4. 打开 Visual Studio,在解决方案资源管理器窗格中选择“显示所有文件”。
      在 vsix 项目中滚动到你的模板 zip 文件,右键单击并选择“包含在项目中”。

    5. 在模板 zip 文件属性中,将 Build Action 更改为 Content、Copy Always 和 Include in VSIX 为 true。

    6. 在 vsixmanifest 编辑器中(双击它),添加资产。 项目模板->文件系统上的文件->压缩包的路径(必须已经在下拉框中作为选项)。

    7. 编译 vsix 项目。打开输出文件夹(通常是 bin\debug),看到结果是根文件夹中的 vsix 文件和它旁边的以下文件夹树。 ProjectTemplates\CSharp\Web\1033\.

    8. 运行 vsix 并查看“Web”下的项目模板。

    9. 沉默片刻。让我们记住在这场血战中倒下的程序员。 :-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-19
      • 1970-01-01
      • 1970-01-01
      • 2011-04-25
      • 1970-01-01
      • 2015-01-12
      • 2022-12-28
      • 1970-01-01
      相关资源
      最近更新 更多