首页 > 解决方案 > 绑定重定向不起作用时该怎么办?

问题描述

我的处境让人想起“DLL 地狱”。我想我正在使用一堆可能会混淆情况的 nuget 包。

投诉是在运行时找不到 System.Net.Http 4.0.0.0

System.IO.FileLoadException:无法加载文件或程序集“System.Net.Http,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

但是,我的 app.config 中有以下内容:

 <dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
  </dependentAssembly>

我希望任何加载 4.0.0.0 的尝试都会加载 4.1.0.0 ,但这并没有发生。我不知道为什么。

这也可能是相关的,这发生在旧的单元测试中。app.config 在单元测试项目中。


PS 我在这个一般领域看到了其他问题,但他们没有回答我的问题,因为我在这里使用 100% C# 代码。

标签: c#visual-studio-2015app-config

解决方案


我感觉到你的痛苦。去年夏天,我为此损失了将近一周的时间。我假设这是一个 .NET Framework(即非核心)项目。删除 System.Net.Http NuGet 包和该程序集的所有绑定重定向。那“应该只是解决”您的问题(不保证)

如果您四处搜索,您应该会发现 Microsoft 产品团队的某个人为混乱道歉并说不应该有 NuGet 包来解决这个问题(我认为它在 GitHub 问题讨论中)。

这是凭记忆 - 对不起,我不再在那里工作,所以我无法检查我的笔记。


推荐阅读