У меня проблема с внешними видами бритвы. В моем проекте у меня есть основная сборка mvc и динамически загружаемые сборки библиотеки классов (из БД) с их собственными контроллерами, представлениями и моделями. Эти сборки напрямую не привязаны и не загружаются во время выполнения.Внешний вид бритвы не может видеть внешние модели
Я смог сделать всю работу системы, создав фабрику настраиваемых контроллеров для контроллеров, специализированного поставщика виртуальных путей для Views. Представления представляют собой встроенные ресурсы в моих внешних сборках.
Проблема заключается в том, что когда я создаю строго типизированный внешний вид с классом модели из внешней сборки, представление не может быть скомпилировано во время выполнения, потому что сборка не передается компилятору бритвы. Таким образом, я получаю следующее сообщение об ошибке:
Compiler Error Message: CS0234: The type or namespace name 'MyPlugin' does not exist in the namespace 'MyNamespace' (are you missing an assembly reference?)
Source Error:
public class
_Page_ExternalViews_MyController_MyAction_cshtml : System.Web.Mvc.WebViewPage<MyNamespace.MyPlugin.Models.MyModel>
{
Он отлично работает, когда я использую динамическую модель, модель класса от моего основного веб-узла или узлов ссылки непосредственно в веб-проекте. Я точно знаю, что внешняя сборка загружается перед компиляцией внешних бритв, поскольку мои контроллеры работают нормально.
Я начал изучать проект RazorGenerator, чтобы предварительно скомпоновать мои внешние представления, но не смог добиться какого-либо прогресса (ничего не генерируется), и я даже не уверен, что я смотрю в правильном направлении, так как мой сборки загружаются во время выполнения, и я должен использовать собственные ViewEngine и ControllerFactory.
Вы пробовали либо из перечисленных здесь вариантов: http://stackoverflow.com/questions/4953330/razor-based-view-doesnt-see -referenced-assemblies –
@Brent Я не могу ссылаться на свои сборки в web.config, потому что они недоступны до запуска веб-приложения. В противном случае, да, это решило бы проблему. –
@Maskim Сколько внешних сборок вы ссылаетесь? Это только один, или их несколько? –