Мне нужна такая же структура, поэтому я выяснил, как обладать отдельными проектами. Никаких изменений кода не требуется, просто нужно немного выполнить конфигурационную работу.
Я собираюсь создать запись в блоге по этому вопросу, но вот основные шаги.
Предположим, у вас есть один проект приложения MVC, и это будет ваше приложение «shell».
правой кнопкой мыши на проект оболочки и «Добавить область ...». Введите название области. Это создаст папку Areas с вашей областью в ней. (Это не на 100% необходимо, но вам нужна папка «Области», и вы можете украсть класс XXXXAreaRegistration для своей заявки.)
Создайте новый пустой проект MVC3 в своем решении, чтобы он соответствовал вашей области. Переместите файл XXXXAreaRegistration.cs в новый проект и при необходимости измените пространство имен.
Удалите папку в папке областей, добавленной мастером шаблонов.
Измените файл web.config нового проекта и выньте строки подключения и разделы аутентификации, членства, профиля, ролей. Вам действительно не нужен web.config, но бритва intellisense не работает без него.
Создайте виртуальный каталог в папке «Области» проекта оболочки с названием вашей области в качестве псевдонима и укажите его в проект «Площадь». Для этого вам потребуется использовать IIS или IIS Express. Я использую IIS. В IIS express вы должны изменить файл конфигурации. Я думаю, что у ScottGu была запись в блоге о том, как это сделать.
Создайте событие post-build в своем проекте «Area», чтобы скопировать dll в папку bin для проектов «shell». My build event: copy $ (TargetDir) \ $ (TargetDileName) $ (SolutionDir) \ ShellProjectName \ bin \ $ (TargetFileName)
В оболочке web.config добавьте проект «area» в System.Web/Ассемблирование.
Вместо 6/7 вы можете просто ссылаться на проект «площадь» с проектом «оболочка», и он работает так же хорошо.Но тогда вы должны развернуть все «области» dll каждый раз. Вероятно, я собираюсь сделать некоторый тип зондирующего кода, чтобы добавить сборки «area» в домен приложения при запуске приложения с помощью отражения или MEF.
Вы также можете отредактировать свою маршрутизацию и добавить к ней фильтр пространства имен как в приложении оболочки, так и в приложении области. Таким образом, вам не нужно беспокоиться о дублировании имен контроллеров, конфликтующих между приложением для продажи и облачными приложениями.
Это примерно. Как только я получу официальную запись в блоге, я попытаюсь вспомнить, чтобы добавить сюда ссылку.
Я писал, как я делаю это при http://bob.archer.net/content/aspnet-mvc3-areas-separate-projects, если кто-то заинтересован.
Это, по моему скромному мнению, самая слабая часть ASP.NET MVC на данный момент. Я надеюсь, что команда MVC будет работать над этим как можно скорее. Возможность создания модульной среды окончательно необходима для нас. – W3Max
Время MVC4 может быть немного раньше, но с бизнес-LOB в подвешенном состоянии с Silverlight, вам нужно, чтобы история затвердела, чтобы переключиться на MVC4 .... надеюсь, P & P может принять участие в подобном шелке примере! – felickz