Добавить пользовательский viewengine в диалоговое окно «Новый проект»?

При создании нового проекта для MVC3 у меня есть возможность выбрать собственный механизм просмотра. Я могу выбирать между Razor и ASPX. Есть ли способ добавить Spark в раскрывающийся список?


person Ropstah    schedule 01.03.2011    source источник


Ответы (2)


Короткий ответ: нет, не совсем так.

Длинный ответ: да, но есть одна загвоздка, требующая редактирования реестра.

New Project Dialog построен на идее выбора сначала шаблона проекта, а затем выбора механизма просмотра, поддерживаемого этим шаблоном.

Другим удалось добавить в это окно свои собственные вещи, поэтому я воспользовался подсказками, предложенными ASP.NET MVC 3 с xUnit.net Testproject, еще одним сторонним расширением, которое какое-то время крутилось в реестре.

Сначала вам нужно создать ProjectTemplate для Visual Studio, из которого он может создать чистый проект Spark. Для полноты картины вы можете сделать это, создав новый проект Razor, перемонтировав его для Spark, а затем экспортировав шаблон с помощью меню «Файл». Снимите флажок, чтобы автоматически зарегистрировать новый экспорт в VS. Я решил упростить установку и переместил новый шаблон туда, где живут официальные шаблоны проектов MVC3 (для меня это был C:\Program Files (x86)\Microsoft VisualStudio 10.0\Common\IDE\ProjectTemplates\CSharp\Web). Затем запустите «devenv/setup» из командной строки, чтобы VS нашел и зарегистрировал только что созданный шаблон.

Пользовательские дополнения к новому диалоговому окну должны быть добавлены здесь:

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Mvc3\ProjectTemplates]
 |
 |- [MyOwnTemplate]
      |- (REG_SZ)Title="Template title"
      |- (REG_SZ)Description="Description for the box in the right"
      |- [C#]
          |- [Spark]
          |   |- (REG_SZ)Path="CSharp\\Web"
          |   |- (REG_SZ)Template="YourCustomCSharpSparkTemplate.zip"
          |   |- (REG_DWORD)SupportsUnitTests=1
          |- [Razor]
              |- (REG_SZ)Path="CSharp\\Web"
              |- (REG_SZ)Template="YourCustomCSharpRazorTemplate.zip"
              |- (REG_DWORD)SupportsUnitTests=0

Если вы не используете 64-разрядную версию, удалите ключ Wow6432Node из открывающегося узла реестра.

Теперь, когда вы перезапускаете VS и запускаете мастер создания диалогового окна проекта для MVC3, там должен быть указан недавно зарегистрированный шаблон. Когда вы выбираете свой собственный шаблон проекта, вы должны увидеть, что в раскрывающемся списке ViewEngine отображается «Spark» в качестве текущего ViewEngine.

New Project Dialog группирует шаблоны по верхнему ключу в разделе ProjectTemplates. Поскольку MVC3 не регистрирует свои шаблоны по умолчанию в реестре, мы не знаем, под каким ключом они сгруппированы, и, следовательно, не можем добавить к ним свои собственные ViewEngine.

person S. Bokhorst    schedule 26.03.2011
comment
Я подозреваю, что у вас есть инсайдерская информация... Я проверю это на выходных. Спасибо за ответ! - person Ropstah; 30.03.2011
comment
Этот ответ устарел. См. взломанный. ком/архив/2011/06/06/ - person S. Bokhorst; 14.06.2011

Вы должны добавить шаблоны T4, которые добавляют поддержку других механизмов просмотра (включая Spark). Вот ссылка, которая объясняет это: http://weblogs.asp.net/jacqueseloff/archive/2010/07/30/mvc-3-supporting-custom-view-engines.aspx

person Kassem    schedule 01.03.2011
comment
Я добавил те. У меня есть список файлов *.tt, которые я добавил в каталог CodeTemplates. Однако это для диалога Add view или New view, а не для диалога New project... - person Ropstah; 02.03.2011