缺少Visual Studio 2013/2015 C++项模板



我正试图为Visual Studio 2013(Professional)C++项目制作一些简单的项目模板,但Visual Studio似乎在与我斗争。我开始使用File -> Export Template...向导,该向导完成并生成了一个zip文件,但遗憾的是,在Add New Item对话框上看不到新模板,所以我开始手动编辑它,看看是否可以修复它。

这是我的测试.vstemplate文件:

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
<TemplateData>
<DefaultName>test</DefaultName>
<Name>Test</Name>
<Description>Test item template.</Description>
<ProjectType>VC</ProjectType>
<!--<SortOrder>10</SortOrder>-->
<Icon>icon.ico</Icon>
</TemplateData>
<TemplateContent>
<ProjectItem TargetFileName="$fileinputname$.h" ReplaceParameters="true">test.h</ProjectItem>
</TemplateContent>
</VSTemplate>

我已经尝试将VCVisualC都用于<ProjectType>,并将模板以压缩和扩展的形式放置在各种文件夹中。

<ProjectType>更改为CSharp并创建C#项目后,它会立即出现。有趣的是,如果%USERPROFILE%DocumentsVisual Studio 2013TemplatesItemTemplatesVisual C#目录为空,那么如果模板在%USERPROFILE%DocumentsVisual Studio 2013TemplatesItemTemplates%USERPROFILE%DocumentsVisual Studio 2013TemplatesItemTemplatesVisual C++ Project目录中,它现在就会显示出来,但如果它的副本也在Visual C#目录中,则它会在新项目对话框中显示两次。。。

我知道Visual Studio 2013速成版RC中有一个错误,"新建项目"对话框根本不会显示任何模板,甚至是内置模板,所以我认为这可能是Visual Studio中的一个缺陷,或者只是微软令人不安地无视C++的又一个例子。

是我遗漏了什么,还是这是VS2013的一个错误?如果是,有人知道有什么变通办法吗?

编辑:此问题在Visual Studio 2015 RC 中仍然存在

有同样的问题。对我有效的解决方法是使用VS2013 Express版本,在该版本中,C++项模板工作得很好(就像在VS2012 Pro/Express中一样)。我不知道为什么这个方便的功能从专业版中删除了,但在免费快速版中继续工作。

我的第一次VS模板冒险遇到了这个!头奖

经过几个小时的摆弄,我现在可以添加自己的模板了,至少在2013年的VS社区中是这样。我认为诀窍是添加<TemplateGroupID>WinRT-Common</TemplateGroupID>。作为参考,这个项目模板出现在一个空的C++项目中:

<?xml version="1.0" encoding="utf-8"?>
<VSTemplate Version="3.0.0" Type="Item" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<TemplateData>
<Name>GameEngine Core Class</Name>
<Description>Creates a header and source file for a new GameEngine Core class.</Description>
<Icon>__TemplateIcon.png</Icon>
<TemplateGroupID>WinRT-Common</TemplateGroupID>
<ProjectType>VC</ProjectType>
<DefaultName>GameEngineClassName</DefaultName>
</TemplateData>
<TemplateContent>
<ProjectItem TargetFileName="$fileinputname$.cpp" ReplaceParameters="true" OpenInEditor="true">GameEngineClass.cpp</ProjectItem>
<ProjectItem TargetFileName="$fileinputname$.h" ReplaceParameters="true" OpenInEditor="true">GameEngineClass.h</ProjectItem>
</TemplateContent>
</VSTemplate>

对于TemplateGroupID,默认值(VC-Native)和VC-Windows似乎都不起作用(以下是完整列表)。我不确定把WinRT-Common放在那里会有什么进一步的影响。它甚至没有列出。

更多细节:我开始在VS2013附带的ComputeShader.vstemplate上进行实验,将其放在templates文件夹中并修改文件,直到它变成现在的样子。在这一过程中的某个地方,我意识到将所有内容都放在.zip文件中是非常重要的,尽管它最初似乎可以工作,因为在检测模板时,Visual Studio最终会表现得非常奇怪(在我意识到这一点之前,我感到非常沮丧)。我想这和缓存有关。

最新更新