为什么添加Microsoft.Extensions.Logging导致无法加载文件或程序集System.Net.Http version = 4.2.0?

时间:2017-12-08 16:33:16

标签: c# .net .net-standard-2.0

我开始从一个新的.Net 4.6.2单元测试项目中获益。这真的很奇怪,所以我打算用一个简化的项目进行复制,我已经put on Github并附上了。在VS中解压缩并运行Nuget还原。有2个提交。第一个是失败的,第二个是在删除" Microsoft.Extensions.Logging.Abstractions"和Microsoft.Extensions.Logging NuGet包。重新添加该包将导致测试失败。

请帮我理解这个奇怪的问题。这个软件包是否来自.Net Standard?根据{{​​3}},System.Net.Http来自.NET Core + Platform Extensions,但我没有使用.Net Core。

我该怎么做才能继续使用System.Net.Http版本4.0.0.0? 构建输出具有:统一主要参考" System.Net.Http,Version = 4.2.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a"。

更新注意:我在第一次提交中执行了同样的删除Nuget包的练习并且测试没有通过,因此所有这些都可能是一个红色的鲱鱼。下面的屏幕截图显示我一次成功了。

更新2:我一步一步地提交了它:apisofnet。我删除了所有包,然后在删除最后一个包后,Microsoft.Extensions.DependencyInjection.Abstractions - system.Net.http缺少构建错误。然后我在ReSharper的参考文献中添加了单元测试!

上次更新:降级到.Net 4.5.2也解决了这个问题。我真的不想这样做: - )。

https://github.com/aligneddev/UseSystemNetHttpReferencing/commits/reproduce Failing

1 个答案:

答案 0 :(得分:2)

UseSystemNetHttp.Test项目的app.config中添加绑定重定向可以解决您的问题:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>