Шаблоны проектов "Один 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"