Шаблоны проектов "Один ASP.NET" в Visual Studio 2013

Цель:

Интеграция шаблонов проектов в коллекции Visual Studio 2013 "Одна ASP.NET".

New ASP.NET Project with Fake Custom Template


Фон:

Проект "быть распределенным" начался как новый проект ASP.NET Web Application, используя шаблон Empty и папки и ссылки MVC и веб-API " проверено. Оттуда я добавил свою любовь и привязанность и использовал Экспорт шаблона. Замятие земли My Documents > Visual Studio 2013 > My Exported Templates. Если у вас есть Visual Studio, установите шаблон для вас, дубликат zip помещается в My Documents > Visual Studio 2013 > Templates > ProjectTemplates. Здесь, где проблема начинается...


Вопрос:

В Visual Studio шаблон находится в ветке дерева Visual С#, а не в шаблоне ASP.NET Web Application. Облом. Еще более странно, шаблон устанавливается только в С#, а не в подпапку Веб.

Документация MSDN в Интернете упоминала <ProjectSubType> в файле .vstemplate, который был пуст, когда я исследовал, но даже явно добавление Web не изменило местоположение пользовательского интерфейса. Это не имеет ничего общего с моей целью, но кажется, что VS2013 не соблюдает некоторые из XML в .vstemplate?

Дополнительная информация:

Я начал копать через Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ProjectTemplates\, и одна из вещей, которые я заметил, это два отдельных дерева папок: {root}\Web\CSharp\1033 и {root}\CSharp\Web\1033.

В первом дереве хранится WebTemplate45 и его проект WebApplication45Dev12.vstemplate, иллюстрирующий значения ProjectType и ProjectSubtype, упомянутые выше. Мимикация этого не изменила ничего.

Второе дерево также содержало WebTemplate45 с включенным WebTemplate.vstemplate. Этот был существенно отличен, потому что его Type=ProjectGroup и он ссылался на тег TemplateGroupID и любопытный тег WizardExtension, который ссылался на OneASPNetProjectTemplateWizard. Я предполагаю, что это шаблон папы, который отображает те, которые отображаются на отображаемом изображении.


Вопрос (ы)

Что требуется для доставки пакета проекта во всплывающем окне "One ASP.Net"? Изменения в реестре? VSIX?

Если это невозможно, нужно ли клонировать окно папы для всех пользовательских проектов? Ex. представьте, что окно отображается только с перечисленными дочерними шаблонами компании.


Литература:

http://msdn.microsoft.com/en-us/library/xwkxbww4.aspx

http://www.asp.net/mvc/tutorials/mvc-4/custom-mvc-templates

Ответы

Ответ 1

Вы видели образец горячего полотенца MVC от John Papa? http://visualstudiogallery.msdn.microsoft.com/1eb8780d-d522-4dcf-bf56-56f0eab305c2

Открытие файла VSIX в WinRAR, бит ключа в HotTowelSpa.2013.vsix\ProjectTemplates\HotTowelSpaProjectTemplate.cshtml\HotTowelSpaProjectTemplate.cshtml.vstemplate выглядит следующим образом:

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

Edit

Действительно, похоже, что вам нужно указать, в частности, что тип проекта MVC: http://www.asp.net/mvc/tutorials/mvc-4/custom-mvc-templates

На странице:

Атрибут Type каждого элемента должен быть установлен в Microsoft.VisualStudio.Mvc.Template. Это пользовательское пространство имен, которое только мастер проекта MVC понимает.

Простое добавление файлов в VSIX недостаточно для регистрации шаблонов с помощью мастера MVC. Вам необходимо предоставить такую ​​информацию, как имя шаблона, описание, поддерживаемые механизмы просмотра и программирования язык для мастера MVC. Эта информация хранится в пользовательских атрибуты, связанные с элементом для каждого vstemplate файл.

Глядя в extensions.vsixmanifest, я действительно вижу <Asset ... ProjectType="MVC"... и активы, отмеченные Type="Microsoft.VisualStudio.Mvc.Template"