Я пытаюсь создать несколько простых шаблонов элементов для проектов 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>
Я пытался использовать оба VC
а также VisualC
за <ProjectType>
и размещение шаблона в различных папках, как в сжатом виде, так и в развернутом виде.
После изменения <ProjectType>
в CSharp
и создание проекта C #, он сразу обнаруживается. Интересно, если %USERPROFILE%\Documents\Visual Studio 2013\Templates\ItemTemplates\Visual C#
каталог пуст, шаблон теперь будет отображаться, если он находится в %USERPROFILE%\Documents\Visual Studio 2013\Templates\ItemTemplates
или же %USERPROFILE%\Documents\Visual Studio 2013\Templates\ItemTemplates\Visual C++ Project
каталоги, но если его копия также находится в Visual C#
каталог, он появляется дважды в диалоге нового элемента …
Я знаю, что в Visual Studio 2013 Express RC была ошибка, из-за которой в диалоговом окне «Новый элемент» вообще не отображались никакие шаблоны, даже встроенные, поэтому я думаю, что это может быть ошибка в Visual Studio или просто еще один пример беспокоящего Microsoft игнорирования C ++.
Я что-то здесь упускаю или это ошибка в VS2013? Если так, кто-нибудь знает какой-нибудь обходной путь?
Изменить: эта проблема все еще существует в Visual Studio 2015 RC
Имея ту же проблему. Обходной путь, который мне подходит, — это использовать редакцию VS2013 Express, где шаблоны элементов C ++ работают просто отлично (как и в VS2012 Pro / Express). Я понятия не имею, почему эта удобная функциональность была удалена из Pro-версии, но продолжает работать в бесплатной экспресс-версии.
Мое первое приключение с шаблонами 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.vstemplate
это идет с VS2013, помещая это в папку шаблонов и изменяя файл, пока это не то, что это теперь. В какой-то момент я понял, что очень важно поместить все в файл .zip, даже если он изначально работает, потому что Visual Studio в конечном итоге будет вести себя очень странно, когда дело доходит до обнаружения шаблонов (до того, как я понял, что это было довольно неприятно) ). Я думаю, это связано с кешем.