Как добавить новый Scaffold, используемый в Scaffolding Visual Studio 2013?

Есть ли способ добавить новый Scaffold или переопределить функциональные возможности Scaffold, используемые в новых Scaffolding Visual Studio 2013?

Единственная документация, которую я могу найти в Интернете, — это то, как переопределить шаблоны T4 с помощью папки CodeTemplates. Я хочу добавить новый Scaffold в список, когда Добавить... > Новый элемент Scaffold... Похоже, что в Visual Studio 2013 это было объединено в библиотеку (Microsoft.AspNet.Scaffolding.Mvc.5.0.dll) и зарегистрированный в GAC или как расширение VS.

http://weblogs.asp.net/imranbaloch/archive/2013/09/15/customizing-the-asp-net-mvc-5-web-api-2-scaffolding-templates.aspx?КомментарийОпубликовано=true#commentmessage

Я хочу переопределить механизм вызова шаблонов T4, чтобы я мог создавать разные файлы и расширять функциональность. Моя конкретная потребность заключается в том, что я хочу создать каркас старого CreateOrEdit.cshtml и нового частичного представления DetailsOrDelete.chtml. Я также хотел бы использовать инструмент Scaffold, который берет файл ресурсов и создает локализованный файл ресурсов на другом языке.


person Andrew Brown    schedule 29.10.2013    source источник
comment
Как это было сделано в обновлении 2 MVC3, как показано в этом видео Стива Сандерсона примерно на 50-й минуте, где он меняет атрибут T4Scaffolding.Scaffolder на T4Scaffolding.ControllerScaffolder, который является подклассом Scaffolder. Создание шаблонов — ASP.NET, NuGet, Entity Framework Code First и другие channel9. msdn.com/Events/MIX/MIX11/FRM13?format=smooth Я считаю, что все, что делал этот класс ControllerScaffolderAttribute (например, его регистрация в графическом интерфейсе инструментов MVC, возможно, реализация некоторого интерфейса, выбранного графическим интерфейсом), будет работать аналогично с новое диалоговое окно MVC 5 Add Controller в VS 2013.   -  person Rad    schedule 05.11.2013
comment
У Стива Андерсона также есть серия блогов, в которых более подробно рассматривается этот процесс: blog.stevensanderson.com/2011/04/06/   -  person Polynomial    schedule 05.11.2013


Ответы (1)


В Visual Studio 2013 RTM нет поддержки добавления полностью настраиваемых шаблонов. Вы можете выполнять только следующие настройки:

  1. Вы можете редактировать или переопределять существующие шаблоны T4 для контроллеров, областей, представлений и т. д.
  2. Вы можете добавить настраиваемые шаблоны представления, которые будут отображаться в существующем шаблоне представления MVC.

Команда Visual Studio работает над повторным включением поддержки пользовательских шаблонов в будущем обновлении Visual Studio.

Чтобы добавить пользовательский шаблон представления сегодня:

  1. Создайте любой проект ASP.NET в VS2013
  2. Добавьте папку с именем CodeTemplates
  3. Создайте там подпапку с именем MvcView или MvcViewWithoutModel в зависимости от того, является ли ваш пользовательский шаблон представления строго типизированным представлением.
  4. Создайте там файл в форме <templatename>.<lang>.t4, где <templatename> — это то, что вы хотите отобразить в раскрывающемся списке шаблона MVC View, а <lang> — это либо cs, либо vb.

Для начала вы можете скопировать любой существующий скаффолдер из стандартного списка VS2013 и настроить его. Вы можете получить встроенные леса здесь:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Web\Mvc\Scaffolding\Templates\MvcView
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Web\Mvc\Scaffolding\Templates\MvcViewWithoutModel

Если вы используете то же имя, что и существующий скаффолдер, то он переопределит встроенный скаффолдер даже при вызове из другого скаффолдера. Например, скаффолдер контроллера MVC будет использовать переопределенный скаффолдер представления, который есть в вашем проекте.

Обновление от 22 апреля 2014 г.

Теперь, когда доступны предварительные версии Visual Studio 2013 Update 2, можно создавать полностью настраиваемые шаблоны шаблонов.

Ознакомьтесь с этой записью в блоге, в которой рассказывается, как написать собственный шаблон шаблона: Создание пользовательского шаблона шаблонов для Visual Studio

person Eilon    schedule 26.01.2014
comment
Привет @Эйлон. Прежде всего, спасибо за информацию. Но есть ли у вас новости по этому поводу? Я с нетерпением жду создания представления CreateOrEdit. - person Rafael Merlin; 18.02.2014
comment
@RafaelMerlin, если вы хотите просто добавить пользовательский шаблон представления, который поддерживается сегодня. Я просто добавил некоторую информацию в свой ответ о том, как это сделать. - person Eilon; 20.02.2014
comment
Спасибо за ваш ответ @Eilon. Мне удалось создать новый шаблон для представления CreateOrEdit, и это очень помогло. Но я стремился к Scaffolding, который автоматически генерирует как контроллер, так и все представления. Я попытался отредактировать свой контроллер, чтобы удалить представление «Подробности», это сработало для контроллера (который больше не генерирует блок «Подробности»), но в итоге он все равно создал представление «Подробности», поэтому я думаю, что это может быть «заблокированный» ресурс . К вашему сведению: я использую VS 2013 Express. - person Rafael Merlin; 20.02.2014
comment
@RafaelMerlin да, к сожалению, для этого вам нужно написать собственный шаблон, который еще не поддерживается, но мы работаем над этим. - person Eilon; 24.02.2014
comment
Я добавил новый файл Scaffold (с именем CreateSampleView.cs.tt) внутри CodeTemplates\MvcView в моем проекте, но он не указан в списке шаблонов Scaffold в окне «Добавить представление». Что еще я могу сделать, чтобы заставить его работать? - person cezarypiatek; 17.03.2015