我在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,项目模板将列在&#34; CSharp&#34;但是当它被列为上面所描述的网络时,它根本就没有显示出来。
有什么想法吗?
答案 0 :(得分: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>
这是类别 - &gt;网页结果。 (我想知道为什么我没有看到这个定义在vstemplate文件中影响它...所以这就是答案。它是csproj文件中的一个定义。)
将vsix和项目添加为项目模板资产,它按预期工作。
当我们理解问题是模板zip所在的路径时,它更简单,也可以解决多个项目模板。
现在是一个多项目模板!
在这种情况下,您有一个zip文件,其中包含root vstemplate和每个包含项目的子文件夹。
root vstemplate文件必须使用以下方式签名:
<ProjectType>CSharp</ProjectType>
<TemplateGroupID>Web</TemplateGroupID>
在vsix项目文件夹中,您必须添加以下文件夹:(关闭visual studio并在windows中的visual studio外部进行。)
ProjectTemplates\CSharp\Web\1033
在1033文件夹下添加模板zip。(视觉工作室外)
打开visual studio,在解决方案资源管理器窗格中选择“显示所有文件”。
在vsix项目中向下滚动到模板zip文件,右键单击并选择“包含在项目中”。
在模板zip文件属性中,将构建操作更改为内容,将复制始终和包含在VSIX中更改为true。
在vsixmanifest编辑器中(双击它),添加资产。 项目模板 - &gt;文件系统上的文件 - &gt; zip的路径(必须在下拉框中作为选项)。
编译vsix项目。打开输出文件夹(通常是bin \ debug),看到结果是根文件夹中的vsix文件和它旁边的以下文件夹树。 ProjectTemplates \ CSHARP \网络\ 1033 \。
运行vsix并查看“Web”下的项目模板。
沉默片刻。让我们记住在这场血战中陷入困境的程序员。 : - )