Многопроектные области в ASP.Net MVC 3 - PullRequest
22 голосов
/ 19 октября 2010

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

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

Ответы [ 2 ]

15 голосов
/ 19 октября 2010

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

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

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

6 голосов
/ 24 августа 2011

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

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

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

  1. щелкните правой кнопкой мыши на проекте оболочки и выберите "Add Area ...".Введите название области.Это создаст папку Области с вашей областью в ней.(Это не требуется на 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".Мое событие сборки: copy $ (TargetDir) \ $ (TargetFileName) $ (SolutionDir) \ ShellProjectName \ bin \ $ (TargetFileName)

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

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

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

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

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

...