В настоящее время я экспериментирую с динамически загружаемыми областями с помощью ASP.NET MVC 3 RC. Я видел, что во многих местах он писал, что это не то, для чего предназначены области, и (по крайней мере, до MVC 2) невозможно, скажем здесь например.
Но все же! Должно быть возможно заставить его работать, не так ли? Я создал решение, добавил проект MVC 3, добавил область и некоторый контент. Все работает хорошо. Теперь я создал новый проект библиотеки классов (в том же решении), добавил ссылку на него из MVC-проекта и начал перемещаться по части, связанной с областью, в библиотеку. Изменен выходной каталог проекта библиотеки в папку области MVC-проекта и убедитесь, что Views и их web.config скопированы в папку вывода.
Прочитав так много о том, как вы не могли иметь внешние области, было немного удивительно, что это сработало. На самом деле проблем нет! Проблема начинается, когда я удаляю ссылку между проектами и вместо этого загружаю библиотеку в код. (Перед вызовом AreaRegistration.RegisterAllAreas()
.) Теперь это не сработает. На всех.
Я немного зациклился на источнике MVC 3, и проблема, похоже, связана с BuildManager.GetReferencedAssemblies()
, который используется чтобы собрать сборки для реализации AreaRegistration
.
Теперь я не уверен на 100%, но похоже, что этот метод рассматривает только сборки, которые присутствовали/упоминались во время компиляции, может кто-то подтвердить, действительно ли это так?
Я отлаживал это, и этот метод-вызов действительно не нашел сборку, которую я загрузил непосредственно перед вызовом. Возможно, из-за чего-то еще, что я пропустил, возможно. Любые идеи?