【问题标题】:Fail to load assembly on a MVC View无法在 MVC 视图上加载程序集
【发布时间】:2013-05-07 19:03:52
【问题描述】:

一些背景

我有一个为多个客户分发的闭源 asp.net MVC 应用程序。我正在尝试开发一个扩展,以包含一些非常具体的功能,供单个客户使用(他也将拥有扩展源代码)。

我正在将扩展开发为另一个 mvc 项目,作为一个区域加载。我试图避免在主应用程序“/bin”文件夹中部署扩展二进制文件。

我正在主应用程序程序集的 PreApplicationStartMethod 中手动加载扩展程序集及其依赖项。区域注册过程顺利,区域路线按预期注册。

问题

当我尝试加载一些扩展页面时,我收到“未找到视图 'xx' 或其主视图或没有视图引擎支持搜索的位置。”消息。我调查了一下,并用“Hello”字符串替换了视图内容。视图已正确呈现。

我试图生成一个触发错误的最小值,结果证明它是“@model”指令。我试图弄清楚发生了什么,这是一个程序集加载错误。我使用“@model object”创建了一个最小视图,并尝试将模型转换为原始类型并收到以下错误消息:“无法加载文件或程序集 'xxx' 或其依赖项之一。系统找不到指定的文件。"(此程序集包含视图使用的类类型)

为了确认问题,我将提到的程序集移至主应用程序“/bin”文件夹,一切正常。

我还在控制器上插入了一些模型操作指令,只是为了调查是否会出现异常但一切正常,我什至可以使用 json 渲染网格。

我正在加载每个程序集:

var assembly = Assembly.LoadFrom(file)
BuildManager.AddReferencedAssembly(assembly)

还有什么我需要做的吗?

【问题讨论】:

    标签: asp.net-mvc-3 assembly-resolution strongly-typed-view


    【解决方案1】:

    需要添加程序集私有路径

    AppDomain.CurrentDomain.AppendPrivatePath(pluginFolder);
    

    不知道真正的解释,但我想这与使用 Assembly.LoadFrom(file) 而不是 Assembly.Load() 以及视图稍后编译的事实有关。

    【讨论】:

      猜你喜欢
      • 2019-01-23
      • 1970-01-01
      • 2021-03-02
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      • 1970-01-01
      • 2016-06-28
      • 1970-01-01
      相关资源
      最近更新 更多