System.Net.Http版本冲突导致构建警告

32

由于 Microsoft.Net.Http.2.0.20710.0 使用了 System.Net.Http,版本为 2.0.0.0,与来自另一个包的版本 4 冲突,导致我收到了一个构建警告。

有什么最好的解决办法?Microsoft.Net.Http.2.0.20710.0 过时了吗?我应该在我的项目中手动引用 System.Net.Http,版本为 4.0.0.0 吗?

构建输出为:

  There was a conflict between "System.Net.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" and "System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
      "System.Net.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" was chosen because it was primary and "System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" was not.
      References which depend on "System.Net.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" [C:\Working\MyProject\packages\Microsoft.Net.Http.2.0.20710.0\lib\net40\System.Net.Http.dll].
          C:\Working\MyProject\packages\Microsoft.Net.Http.2.0.20710.0\lib\net40\System.Net.Http.dll
            Project file item includes which caused reference "C:\Working\MyProject\packages\Microsoft.Net.Http.2.0.20710.0\lib\net40\System.Net.Http.dll".
              System.Net.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
      References which depend on "System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" [C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Net.Http.dll].
          C:\Working\MyProject\packages\Microsoft.AspNet.WebApi.Core.4.0.20710.0\lib\net40\System.Web.Http.dll
            Project file item includes which caused reference "C:\Working\MyProject\packages\Microsoft.AspNet.WebApi.Core.4.0.20710.0\lib\net40\System.Web.Http.dll".
              System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL
              System.Web.Http.WebHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL
          C:\Working\MyProject\packages\Microsoft.AspNet.WebApi.Client.4.0.20710.0\lib\net40\System.Net.Http.Formatting.dll
            Project file item includes which caused reference "C:\Working\MyProject\packages\Microsoft.AspNet.WebApi.Client.4.0.20710.0\lib\net40\System.Net.Http.Formatting.dll".
              System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL
              System.Net.Http.Formatting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL
              System.Web.Http.WebHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL
          C:\Working\MyProject\packages\Microsoft.AspNet.WebApi.WebHost.4.0.20710.0\lib\net40\System.Web.Http.WebHost.dll
            Project file item includes which caused reference "C:\Working\MyProject\packages\Microsoft.AspNet.WebApi.WebHost.4.0.20710.0\lib\net40\System.Web.Http.WebHost.dll".
              System.Web.Http.WebHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1578,5): warning MSB3247: Found conflicts between different versions of the same dependent assembly.

我遇到了同样的问题。你找到解决办法了吗?我曾经有印象,当我添加所有的Web API项目时,它得到了修复。但现在这个问题又回来了。 - Remy
1
不行,还是出现了。这是我 CI 构建中唯一令人烦恼的警告。 - NikolaiDante
我实际上认为它甚至没有在我的项目中被引用。但是使用Web API会安装/卸载它。 - Remy
1个回答

32

您可以尝试在此 Microsoft Connect bugreport中提到的解决方法。

或者您可以尝试将以下内容添加到您的Web.config文件中:

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

编辑:

以下是 Connect Bug 的解决方法:

将.......修改为:<Reference Include="System.Net.Http, Version=4.0.0.0">
以使其读取为......:<Reference Include="System.Net.Http">


我一直在寻找更好的答案或确认您的答案,自从我开始悬赏以来,您已经获得了4个额外的赞同,这对我来说足够了。享受这个+50吧。 - user247702
这也是解决错误的方法:主要引用“myASPWebsite.dll”无法解析,因为它对框架程序集“System.Net.Http, Version=2.2.15.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”有间接依赖, 而该程序集在当前目标框架“.NETFramework,Version=v4.5”中无法解析。要解决此问题,要么删除引用“myASPWebsite.dll”, 要么将应用程序重新定向到包含“System.Net.Http, Version=2.2.15.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”的框架版本。 - GreyCloud
7
微软已经弃用了Connect,并且所有指向错误报告的链接现在都已失效。上述解决方案在VS 2017 .NET 4.6.2中不起作用。 - ajeh
在你的 Web.config 文件中,很酷,但是 Web.config 文件在哪里? - birgersp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接