Поделиться через


Пользовательский шаблон MVC

Жак Элофф (Jacques Eloff)

В выпуске обновления средств MVC 3 для Visual Studio 2010 появился отдельный мастер проектов для проектов MVC. Изменение было обусловлено двумя факторами. Во-первых, введение новых шаблонов в MVC 3 и поддержка дополнительных обработчиков представлений, таких как Razor, приводят к переполнению диалогового окна "Новый проект" в Visual Studio. Во-вторых, клиенты запрашивали точки расширяемости, и новый мастер проектов MVC даст нам возможность ответить на эти запросы.

Добавление пользовательских шаблонов было трудным процессом, который использовал реестр, чтобы сделать новые шаблоны видимыми для мастера проектов MVC. Автор нового шаблона должен был упаковать его в MSI-файл, чтобы обеспечить создание необходимых записей реестра во время установки. В качестве альтернативы можно сделать ZIP-файл, содержащий шаблон, и предоставить пользователю возможность создать необходимые записи реестра вручную.

Ни тот из упомянутых подходов не является идеальным, поэтому мы решили использовать существующую инфраструктуру, предоставляемую расширениями VSIX , чтобы упростить создание, распространение и установку пользовательских шаблонов MVC, начиная с MVC 4 для Visual Studio 2012. Ниже приведены некоторые преимущества, предоставляемые этим подходом.

  • Расширение VSIX может содержать несколько шаблонов, поддерживающих разные языки (C# и Visual Basic), и несколько обработчиков представлений (ASPX и Razor).
  • Расширение VSIX может быть предназначено для нескольких номеров SKU Visual Studio, включая номера SKU Express.
  • Коллекция Visual Studio упрощает распространение расширения для широкой аудитории.
  • Расширения VSIX можно обновить, что упрощает внесение исправлений и обновлений в пользовательские шаблоны.

Предварительные требования

  • Пользователи должны быть знакомы с шаблонами проектов разработки, включая необходимую разметку для vstemplate-файлов и т. д.
  • Пользователям потребуется установить Visual Studio Professional и более поздние версии. Номера SKU Express не поддерживают создание проектов VSIX.
  • Установленный пакет SDK для Visual Studio 2012.

Пример

Первым шагом является создание проекта VSIX с помощью C# или Visual Basic. Выберите Файл > Новый проект, щелкните Расширяемость в области слева и выберите проект VSIX.

Создать проект

После создания проекта откроется конструктор VSIX.

Метаданные Designer проекта

Конструктор можно использовать для изменения некоторых общих свойств расширения, которые будут отображаться пользователям при установке расширения или просмотра установленных расширений в Visual Studio (расширения инструментов > и Обновления). После заполнения общих сведений перейдите на вкладку Установить целевые объекты.

Снимок экрана: вкладка

Эта вкладка используется для указания номеров SKU и версий Visual Studio, поддерживаемых расширением. Установите флажок Этот VSIX установлен для всех пользователей, чтобы включить установку VSIX для каждого компьютера. Нажмите кнопку Создать справа, чтобы добавить дополнительные номера SKU, например Web Developer Express (VWD).

Добавление нового целевого объекта установки

Если вы планируете поддерживать все номера SKU professional и более поздних версий (Professional, Premium и Ultimate), необходимо выбрать только минимальный номер SKU в семействе , Microsoft.VisualStudio.Pro. Не забудьте сохранить все изменения после завершения установки целевых объектов.

Снимок экрана: вкладка

Вкладка Активы используется для добавления всех файлов содержимого в VSIX. Так как для MVC требуются пользовательские метаданные, вы будете редактировать необработанный XML-код файла манифеста VSIX вместо использования вкладки Активы для добавления содержимого. Начните с добавления содержимого шаблона в проект VSIX. Важно, чтобы структура папки и содержимое зеркало макет проекта. В приведенном ниже примере содержатся четыре шаблона проектов, производных от шаблона базового проекта MVC. Убедитесь, что все файлы, составляющие шаблон проекта (все, что находится под папкой ProjectTemplates), добавлены в группу элементов содержимого в файле проекта VSIX и что каждый элемент содержит набор метаданных CopyToOutputDirectory и IncludeInVsix , как показано в примере ниже.

<Content Include="ProjectTemplates\MyMvcWebApplicationProjectTemplate.csaspx\BasicWeb.config">

<CopyToOutputDirectory>Always</CopyToOutputDirectory>

<IncludeInVSIX>true</IncludeInVSIX>

</Содержимого>

В противном случае интегрированная среда разработки попытается скомпилировать содержимое шаблона при сборке VSIX, и вы, скорее всего, увидите ошибку. Файлы кода в шаблонах часто содержат специальные параметры шаблона , используемые Visual Studio при создании экземпляра шаблона проекта и, следовательно, не могут быть скомпилированы в интегрированной среде разработки.

обозреватель решений

Закройте конструктор VSIX, щелкните правой кнопкой мыши файл source.extension.manifest в Обозреватель решений, выберите Открыть с помощью и выберите редактор XML (текст).

Диалоговое окно

Создайте элемент Assets> и добавьте элемент Asset для каждого файла, который должен быть включен в VSIX.<<> Атрибут Type каждого <элемента Asset> должен иметь значение Microsoft.VisualStudio.Mvc.Template. Это пользовательское пространство имен, понятное только мастеру проектов MVC. Дополнительные сведения о структуре и макете файла манифеста см. в документации по схеме VSIX 2.0.

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

<Asset d:VsixSubPath="ProjectTemplates\MyMvcWebApplicationProjectTemplate.csaspx"

Type="Microsoft.VisualStudio.Mvc.Template"

d:Source="File"

Path="ProjectTemplates\MyMvcWebApplicationProjectTemplate.csaspx\BasicMvcWebApplicationProjectTemplate.11.csaspx.vstemplate"

ProjectType="MVC"

Language="C#"

ViewEngine="Aspx"

TemplateId="MyMvcApplication"

Title="Пользовательское базовое веб-приложение"

Description="Настраиваемый шаблон, производный от базового веб-приложения MVC (Razor)"

Version="4.0"/>

Ниже приведено описание настраиваемых атрибутов, которые должны присутствовать:

  • Для параметра ProjectType должно быть задано значение MVC.
  • Язык обозначает язык разработки, поддерживаемый шаблоном. Допустимые значения: C# или VB.
  • ViewEngine обозначает обработчик представлений, поддерживаемый шаблоном, например Aspx или Razor. Для этого поля можно указать пользовательское значение.
  • TemplateId используется для группировки шаблонов. Если значение соответствует существующему идентификатору шаблона, оно будет переопределять шаблоны, ранее зарегистрированные в мастере MVC.
  • Название обозначает краткое описание, отображаемое в мастере MVC под каждым шаблоном проекта.
  • Описание обозначает более подробное описание шаблона.

После добавления всех файлов в манифест и его сохранения вы увидите, что на вкладке Активы в конструкторе будут отображаться все файлы, но не настраиваемые атрибуты, добавленные <в элементы Asset> для файлов vstemplate .

Ресурсы project Designer

Осталось только скомпилировать проект VSIX и установить его.

Убедитесь, что все экземпляры Visual Studio закрыты на компьютере, на котором планируется протестировать расширение VSIX. Visual Studio проверяет наличие новых расширений во время запуска, поэтому, если интегрированная среда разработки открыта при установке VSIX, потребуется перезапустить Visual Studio. В Обозреватель дважды щелкните файл VSIX, чтобы запустить установщик VSIX, щелкните Установить, а затем запустите Visual Studio.

Установщик VSIX

В меню выберите Сервис > Расширения и Обновления, чтобы убедиться, что расширение установлено. Если установщик VSIX сообщил о каких-либо ошибках во время установки расширения, можно просмотреть журнал установщика VSIX для получения дополнительных сведений. Журнал обычно создается в папке %temp% пользователя, который установил расширение, например C:\Users\Bob\AppData\Local\Temp.

Расширения и Обновления

После закрытия окна можно создать проект MVC 4, чтобы увидеть, отображаются ли новые шаблоны в мастере MVC.

Новый проект ASP.NET MVC 4

Ограничения

  1. Мастер MVC не поддерживает локализованные пользовательские шаблоны.
  2. Мастер не будет сообщать об ошибках, если ему не удается найти пользовательские шаблоны. Если какой-либо из обязательных настраиваемых атрибутов отсутствует, шаблон будет просто исключен из мастера.