Ответ 1
Вы можете взглянуть на следующую статью, которая иллюстрирует, как пользовательский VirtualPathProvider может использоваться для извлечения представлений Razor, встроенных в отдельные сборки в качестве ресурсов.
Вот чего я хочу достичь, я хочу отделить AREAs ASP.NET MVC как чистую одиночную DLL.
Каждая из них представляет собой отдельную ASP.NET MVC Area со своими собственными страницами CSHTML или ASPX по умолчанию. Установка, перенос и поддержание большого количества страниц, включая ресурсы, javascripts и т.д., - настоящая боль для длительной работы. Поскольку большинство из них вряд ли изменится.
Мой последний сайт будет таким.
\MvcApplication
\bin
\MvcApplication.bin
\Blog.dll
\Forums.dll
\Controllers
\..
\Models
\..
\Views
\..
\Global.asax
\Web.config
Не добавляя ничего, просто отбрасывая Blog.dll, мое приложение должно поддерживать/блог и все его страницы. Если я хочу что-то настроить, чем добавить область и добавить только cshtml-страницы.
\MvcApplication
\bin
\MvcApplication.bin
\Blog.dll
\Forums.dll
\Areas
\Blog
\Views
\Shared
\BlogLayout.cshtml <-- this will override the look
\Controllers
\..
\Models
\..
\Views
\..
\Global.asax
\Web.config
Это поможет повторно использовать плагины ASP.NET Area, просто отбросив dll в папке bin. Однако web.config может потребовать внесения некоторых изменений, но, скорее всего, мы сохраним значения конфигурации в базе данных, и только нужно, чтобы это было "Строка подключения Entity Framework" в web.config.
Мои проблемы (вопросы)
Вы можете взглянуть на следующую статью, которая иллюстрирует, как пользовательский VirtualPathProvider может использоваться для извлечения представлений Razor, встроенных в отдельные сборки в качестве ресурсов.
Возможно, стоит посмотреть на переносные области из mvccontrib. Я не использовал их с MVC 2, но нашел следующий вопрос SO, у кого-то есть проблемы с их использованием с MVC 3, с некоторыми возможными решениями: ASP.NET MVC 3, Razor Views, и портативные области
MvcCodeRouting поддерживает то, что вы хотите, а также много других интересных вещей. Проверьте этот пост о плагинах ASP.NET MVC.