ASP.使用由MEF加载的模型类型的Net MVC视图会导致视图构建器中的JIT编译错误
本文关键字:视图 构建 错误 编译 JIT MVC MEF 加载 Net 类型 模型 | 更新日期: 2023-09-27 18:12:21
这个命名类似于下面的问题:. NET MVC:视图引擎无法找到使用MEF加载的模型类型的视图
,这是一个非常类似的问题,我有。我使用。net fx 4.6, MEF 2和MVC 4。我有一个单独的类项目,其中包含Mvc视图,视图文件夹中的相关配置和视图中引用的导出模型。
视图和相关配置以及由此产生的dll被复制到MVC主机项目中的插件文件夹中,除了当视图在运行时编译时,我得到以下错误CS0234: The type or namespace name 'Central' does not exist in the namespace 'MyCompany' (are you missing an assembly reference?)
当我在视图中删除Model引用时,它将正确加载视图。
当我将dll放在主机应用程序的bin文件夹中时,它工作得很好。
只有当dll被放置在Plugins文件夹中时,才会出现此异常。
我尝试在Global开头使用已弃用的AppDomain.CurrentDomain.AppendPrivatePath(Path.Combine(HttpRuntime.AppDomainAppPath, "Plugins"));
。
所引用的问题有@BradWilson和@MatthewAbbott的注释,两者都指的是dll在bin文件夹中的位置。
谁能告诉我如何做到这一点,使导入的dll可能留在插件文件夹,而不是把它放在bin文件夹,并导致MVC主机重置?
最后我使用了@Ilija Dimov评论中提到的解决方案,并在这里找到。
感谢@Ilija Dimov
我想我应该分享一下我处理强类型视图问题的经验,当涉及到MEF时。如果创建插件,最好不要使用它们。使用其他前端工具(如knockout js)对视图进行数据绑定,这意味着您根本不用使用razor代码,但它仍然为您提供了一个构建插件的良好框架。为了更好地补充您的插件,请使用ko组件,这同时提高了模块化和可重用性。