当bindingredirect不起作用怎么办?

时间:2019-02-01 19:15:04

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

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

抱怨是在运行时找不到System.Net.Http 4.0.0.0

  

System.IO.FileLoadException:无法加载文件或程序集'System.Net.Http,版本= 4.0.0.0,文化=中性,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在单元测试项目中。


P.S。我在该常规领域中看到了其他问题,但由于我在此处使用100%C#代码,因此它们无法回答我的问题。

1 个答案:

答案 0 :(得分:0)

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

如果您四处搜寻,您应该从Microsoft产品团队的某人处发现一条便条,表示歉意,并说永远不应该有NuGet软件包(我认为它在GitHub问题讨论中)。

这是从记忆中来的-对不起,我不再在那儿工作了,所以我无法查看笔记。