ASP.NET MVC 3 RC AreaRegistration.RegisterAllAreas () и динамически загружаемые сборки

В настоящее время я экспериментирую с динамически загруженными областями с помощью ASP.NET MVC 3 RC . Я видел во многих местах, что это не те области, для которых предназначены, и (по крайней мере, до MVC 2) это невозможно, скажем, здесь , например.

Но все же! Должно быть возможно заставить его работать, верно? Я' Мы создали решение, добавили проект MVC 3, добавили область и некоторый контент. Все работает хорошо. Теперь я создал новый проект библиотеки классов (в том же решении), добавил ссылку на него из MVC-проекта и начал перемещать части, относящиеся к области, в библиотеку. Изменил каталог вывода проекта библиотеки на папку области проекта MVC и убедился, что представления и их web.config скопированы в папку вывода.

После того, как вы так много прочитали о том, как вы не могли ' У меня нет внешних областей, было немного удивительно, что это сработало. На самом деле никаких проблем! Проблема начинается, когда я удаляю ссылку между проектами и вместо этого загружаю библиотеку в коде. (Перед вызовом AreaRegistration.RegisterAllAreas () .) Теперь это не работает. Вообще.

Я ' Я немного ковырялся в исходном коде MVC 3, и проблема, похоже, связана с BuildManager.GetReferencedAssemblies () , который используется, чтобы заставить сборки искать реализации AreaRegistration .

Я не уверен на 100% в этом, но похоже, что этот метод смотрит только на сборки, которые присутствовали / на которые ссылались во время компиляции, может ли кто-нибудь подтвердить, действительно ли это так?

Я отлаживал через это, и этот вызов метода действительно не находит сборку, которую я загрузил непосредственно перед ее вызовом. Возможно, это из-за чего-то еще, что я пропустил ... Есть идеи?

13
задан marcind 22 November 2010 в 07:50
поделиться