22

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

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

ответ

15

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

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

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

+20

Это, по моему скромному мнению, самая слабая часть ASP.NET MVC на данный момент. Я надеюсь, что команда MVC будет работать над этим как можно скорее. Возможность создания модульной среды окончательно необходима для нас. – W3Max

+0

Время MVC4 может быть немного раньше, но с бизнес-LOB в подвешенном состоянии с Silverlight, вам нужно, чтобы история затвердела, чтобы переключиться на MVC4 .... надеюсь, P & P может принять участие в подобном шелке примере! – felickz

6

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

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

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

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

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

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

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

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

  6. Создайте событие post-build в своем проекте «Area», чтобы скопировать dll в папку bin для проектов «shell». My build event: copy $ (TargetDir) \ $ (TargetDileName) $ (SolutionDir) \ ShellProjectName \ bin \ $ (TargetFileName)

  7. В оболочке web.config добавьте проект «area» в System.Web/Ассемблирование.

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

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

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

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

+0

Хмм выглядит интересно. В ожидании увидеть вашу запись в блоге специально часть MEF – Tassadaque

+0

После дальнейшего тестирования я решил, что ссылки на проекты не требуются. По-видимому, MVC-код использует BuildManager для получения списка сборок. Таким образом, вам не нужно ничего делать, кроме как настроить ваши проекты «области» для вывода в папку bin проектов shell. – PilotBob

+0

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