【发布时间】:2017-11-20 00:53:17
【问题描述】:
我们的项目(.Net Framework 4.6.2)在 EF Core 1.1.0 上运行良好。然后我们决定升级到 EF Core 2.0.0。花了几天时间调整代码以使用新语法,让我们的单元和集成测试再次通过,最后他们做到了。所以今天我们部署到我们的 QA 站点上,它立即中断了 DLL Hell 消息:
无法加载文件或程序集 'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)
在升级过程中,我已将 System.Net.Http 从 4.3.0 更新到 4.3.3,因此我尝试将其反转。没有帮助。我尝试注释掉 web.config 中的依赖程序集引用,这使得消息发生了变化:
无法加载文件或程序集 'System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)
你好!如果我理解正确,这意味着绑定重定向实际上找到了 System.Net.Http 的 4.1.1.0 版本(这是正确的版本) - 但是还有一些其他程序集与我的部署一起出现,即寻找版本 4.0.0.0,并忽略绑定重定向。
我如何找到哪个程序集搞砸了我?以及如何让它尊重绑定重定向?
【问题讨论】:
-
我不知道这是否是您的问题,但在 assemblyBinding 标签上有一个“appliesTo”属性。如果将其设置为错误的版本,则重定向将失败。当它开始导致此类问题时,我们刚刚删除了该属性。 docs.microsoft.com/en-us/dotnet/framework/configure-apps/…
-
@asawyer 我在
web.config中没有看到任何“appliesTo”标签。 -
对不起。祝你好运。
-
当我将我的一个 .NET Core 应用程序升级到 2.0 时,我在将新版本发布到 Azure 时遇到了 DLL 地狱。这是因为以前版本的依赖 DLL 在发布时没有被清除。如果可能,请暂停 QA,关闭应用程序,清除发布目录的内容(除了任何配置或资源)并重新发布应用程序。我在这里写了我的烦恼:dotnetcore.gaprogman.com/2017/11/02/…
标签: asp.net-mvc dll entity-framework-core