Подтвердить что ты не робот

Области мультипроекта в ASP.Net MVC 3

Есть ли какие-либо идеи о поддержке области мультипроекта в asp.net mvc 3? Поскольку он был деградирован для будущего статуса в mvc 2. Если он все еще не включен, мы должны ожидать ASP.Net MVC Portable Areas через MvcContrib, Можете ли вы поделиться своими впечатлениями?

Каков рекомендуемый способ управления большим приложением? Я читал о MEF. В каких сценариях рекомендуется использовать MEF?

4b9b3361

Ответ 1

Я ведущий разработчик ASP.NET MVC в Microsoft.

В ASP.NET MVC 3 нет планов включать многопроектные области. Однако это определенно область, которую мы планируем пересмотреть в будущем.

Тем временем решения MvcContrib, вероятно, являются лучшими. Загрузка MVC Futures по-прежнему включает в себя старую (и, возможно, только полуфункциональную) версию оригинальной функции многопроектных областей. Поскольку полный исходный код для него также доступен, вы можете создать решение, настроенное под ваши нужды.

Ответ 2

Мне нужна одна и та же структура, поэтому я выяснил, как обладать отдельными проектами. Нет необходимости в каких-либо изменениях кода, вам просто нужно выполнить небольшую конфигурационную работу.

Я собираюсь создать запись в блоге, но вот основные шаги.

Предположим, что у вас есть один проект приложения MVC, и это будет ваше приложение "shell".

  • щелкните правой кнопкой мыши проект оболочки и "Добавить область...". Введите название области. Это создаст папку Areas с вашей областью в ней. (Это не на 100% необходимо, но вам нужна папка "Области", и вы можете украсть класс XXXXAreaRegistration для вашего приложения.)

  • Создайте новый пустой проект MVC3 в своем решении, чтобы он соответствовал вашей области. Переместите файл XXXXAreaRegistration.cs в новый проект и при необходимости измените пространство имен.

  • Удалите папку в папке областей, добавленной мастером шаблонов.

  • Измените файл web.config нового проекта и выньте строки подключения и разделы аутентификации, членства, профиля, роли. Вам действительно не нужен web.config, но бритва intellisense не работает без него.

  • Создайте виртуальный каталог в папке "Области" проекта оболочки с именем вашей области в качестве псевдонима и укажите его в проект "area". Для этого вам потребуется использовать IIS или IIS Express. Я использую IIS. В IIS express вы должны изменить файл конфигурации. Я думаю, что у ScottGu была запись в блоге о том, как это сделать.

  • Создайте событие post-build в вашем проекте "area", чтобы скопировать dll в папку bin bin проектов. Мое событие сборки: copy $(TargetDir)\$(TargetFileName) $(SolutionDir)\ShellProjectName\bin\$(TargetFileName)

  • В оболочке web.config добавьте проект "area" в раздел System.Web/Assemblies.

Вместо 6/7 вы можете просто ссылаться на проект "area" на проект "shell", и он работает так же хорошо. Но тогда вам нужно развернуть все dll "area" каждый раз. Я, вероятно, собираюсь сделать некоторый тип кода зондирования, чтобы добавить сборки "area" в домен приложения при запуске приложения, используя отражение или MEF.

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

Что об этом. Как только я получу официальную запись в блоге, я постараюсь не добавлять ссылку сюда.

Я писал, как я делаю это при http://bob.archer.net/content/aspnet-mvc3-areas-separate-projects, если кто-то заинтересован.