8

我正在尝试为 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>

我尝试同时使用VCVisualCfor<ProjectType>并将模板放在各种文件夹中,包括压缩和展开形式。

更改并创建 C# 项目后<ProjectType>CSharp它会立即显示出来。有趣的是,如果%USERPROFILE%\Documents\Visual Studio 2013\Templates\ItemTemplates\Visual C#目录是空的,如果它在%USERPROFILE%\Documents\Visual Studio 2013\Templates\ItemTemplatesor%USERPROFILE%\Documents\Visual Studio 2013\Templates\ItemTemplates\Visual C++ Project目录中,模板现在会显示出来,但如果它的副本也在Visual C#目录中,它会在新项目对话框中显示两次......

我知道 Visual Studio 2013 Express RC 存在一个错误,其中“新项目”对话框根本不会显示任何模板,甚至是内置模板,所以我认为这可能是 Visual Studio 中的一个错误,或者只是微软对 C++ 的令人不安的漠视的另一个例子。

我在这里缺少什么或者这是VS2013的错误吗?如果是这样,有人知道任何解决方法吗?

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

4

2 回答 2

5

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

于 2014-11-19T08:18:30.107 回答
0

我第一次使用 VS 模板冒险,我遇到了这个!大奖!

经过几个小时的摆弄,我现在可以添加自己的模板,至少在 VS Community 2013 中是这样。我认为诀窍是添加<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那里可能会产生什么进一步的影响。它甚至没有列出。

更多细节:我开始尝试ComputeShader.vstemplateVS2013 附带的,将它放在模板文件夹中并修改文件,直到它成为现在的样子。一路走来,我意识到将所有内容放在 .zip 文件中非常重要,尽管它最初似乎可以工作,因为 Visual Studio 在检测模板时最终会表现得非常奇怪(在我意识到之前,这非常令人沮丧)。我想这与缓存有关。

于 2017-09-10T01:23:48.493 回答