【问题标题】:Autofac 3.4 is missing, while 3.5 is called缺少 Autofac 3.4,而调用了 3.5
【发布时间】:2015-05-02 07:19:23
【问题描述】:

尝试运行MVC 5.2项目,构建成功,出现如下错误:

“System.IO.FileLoadException”类型的异常发生在 ProjectNamespace.WebUI.dll 但未在用户代码中处理

附加信息:无法加载文件或程序集'Autofac, 版本=3.4.0.0,文化=中性,PublicKeyToken=17863af14b0044da' 或 它的依赖项之一。定位程序集的清单定义 与程序集引用不匹配。 (HRESULT 的例外情况: 0x80131040)

程序集管理器从以下位置加载: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll 下运行 可执行文件 C:\Program Files (x86)\IIS Express\iisexpress.exe --- 详细的错误日志如下。

=== 绑定前状态信息 === LOG: DisplayName = Autofac, Version=3.4.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da (完全指定)日志:Appbase = file:///C:/ProjectPath/WebUI/ 日志: 初始 PrivatePath = C:\ProjectPath\WebUI\bin 调用程序集: Autofac.Integration.Mvc,版本=3.3.0.0,文化=中性, PublicKeyToken=17863af14b0044da。 === LOG:此绑定在默认加载上下文中开始。 LOG:未找到应用程序配置文件。 LOG:使用主机配置文件: C:\Users\me\Documents\IISExpress\config\aspnet.config 日志:使用 机器配置文件来自 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config。 日志:政策后参考:Autofac,版本=3.4.0.0,文化=中性, PublicKeyToken=17863af14b0044da 日志:正在尝试下载新 URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET 文件/root/5c8bedab/6a36492/Autofac.DLL。日志:尝试 下载新网址 file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET 文件/root/5c8bedab/6a36492/Autofac/Autofac.DLL。日志: 正在尝试下载新 URL file:///C:/ProjectPath/WebUI/bin/Autofac.DLL。警告:比较 程序集名称导致不匹配:次要版本 ERR:无法 组装的完整设置(hr = 0x80131040)。探测终止。

我的 web.config 有以下设置:

<dependentAssembly>
     <assemblyIdentity name="Autofac" publicKeyToken="17863af14b0044da" culture="neutral" />
     <bindingRedirect oldVersion="0.0.0.0-3.5.0.0" newVersion="3.5.0.0" />
</dependentAssembly>

花了几个小时试图解决它,但失败了。请帮忙。

【问题讨论】:

  • 到目前为止您尝试过什么?如果您再次卸载并安装此类错误,则该软件包将解决问题。

标签: asp.net-mvc


【解决方案1】:

这个问题已经很普遍了。当您拥有 Autofac、Autofac.Mvc5 和 Microsoft.AspNet.Mvc>5.1.0 包时,它似乎会出现,即使 Autofac.Mvc5 被声明与 Microsoft.AspNet.Mvc(≥ 5.1.0 &&

  1. 我建议为 autofac 检查和添加适当的程序集绑定重定向的经典解决方案,不仅在引用它的项目中,而且在引用该项目的项目中。

  2. 另一个潜在的问题是

    有两个条目
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    

在您的配置中,如果您的绑定在第二个中,则将它们移动到第一个。在我还加密一些配置设置并且由于某种原因绑定重定向未复制到生成的配置文件中的情况下,这为我修复了它。

我强烈推荐Assembly Binding Log Viewer,它对我解决问题有很大帮助,尽管我的最终解决方案是一个懦弱的解决方案,使用 Autofac3.4.0.0 和 Microsoft.AspNet.Mvc 5.1.0。我花了太多时间来解决问题。

此外,对于那些感兴趣的人,您可以使用 nuget 管理器来检测和填写您的程序集绑定重定向:Get-Project -All | Add-BindingRedirect(来自here)。根据您的项目和参考资料,之后可能需要添加一些内容,但至少它会给您一个全新的开始。

更新

Microsoft.AspNet.Mvc 5.2.3 发布了,所以我决定再试一次。我将“冲突”中涉及的每个软件包都更新到了最新版本(Autofac 3.5.2、Autofac.Mvc5 3.3.4、Microsoft.AspNet.Mvc 5.2.3)。我更新了重定向绑定并且它起作用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多