In my diagnostic view of my build output shows this conflict
There was a conflict between "System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" and "System.Net.Http, Version=4.1.1.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". (TaskId:20) "System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" was chosen because it was primary and "System.Net.Http, Version=4.1.1.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" was not. (TaskId:20) 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.6.1\System.Net.Http.dll]. (TaskId:20)
I got here by adding the RestSharp nuget package. I was not having an issue until I installed this and I think one of the pieces that came with it may have caused this issue. I tried to uninstall it but that did not work.
7条答案
按热度按时间pvcm50d11#
安装Nuget套件:System.Net.Http版本4.3.3安装正确的版本=4.1.1.2
这将在项目文件中产生以下引用:
lpwwtiir2#
如果您使用vs 2017,一些项目将强制u引用system .NET.http(4.2.0.0)当您从nuget(版本4.3.3)安装时,您的system .NET.http将是4.1.1.2
因此,在您的web.config或app.config中,您可以更改为4.1.1.2或4.2.0.0这取决于运行时复制到bin文件夹的版本
5m1hhzi43#
我正在使用**.NET Framework 4.7.2和Visual Studio 15.5**。当我将System.Net.Http 4.3.3升级到4.3.4时,收到“无法加载”错误:
{“未能加载文件或程序集”System.Net.Http,Version=4.2.0.0,Culture=neutral,PublicKeyToken= b 03 f5 f7 f11 d50 a3 a“或它的某个依赖项。系统找不到指定的文件。":“System.Net.Http,Version=4.2.0.0,Culture=neutral,PublicKeyToken= b 03 f5 f7 f11 d50 a3 a”}
我通过了该步骤,但却得到了 FileNotFoundException:
无法加载文件或程序集'System .NET.Http,Version=4.2.0.0,Culture=neutral,PublicKeyToken= b 03 f5 f7 f11 d50 a3 a'或它的某个依赖项。系统找不到指定的文件。
GitHub上的**.NET Core项目中的这个线程讨论了这个问题,我发现GitHub上的.NET Core项目中的这个帖子非常有帮助:
https://github.com/dotnet/corefx/issues/25773#issuecomment-350036434
我的(可怜的)总结:Microsoft正在尝试消除对System.Net.HttpNuGet包的需要,因为它是解决其他版本问题的一种变通方法。.NET Framework 4.7.1和VS 15.5进行了一些更改,这些更改(应该?)完全消除了对System. Net.HttpNuGet包及其关联绑定的需要。
我从我的项目中删除了System .NET.HttpNuGet包,并添加了对.NET Framework 4.7.2附带的System .NET.Http**的引用,一切都恢复了原样。
cbeh67ev4#
从4.6.1框架升级到4.7.2后,我们开始遇到此错误,最终解决方案是转到Web配置文件,找到以下内容:
并将其替换为
上面所做的改变就是:新版本=”4.0.0.0“
q5iwbnjs5#
**根本原因:**当您在应用程序中引用某些第三方库时,通常会遇到此类问题。
System.Net.Http
4.2.0.0
版本的引用。并且您的项目也使用了System.Net.Http
4.0.0.0
的引用(来自GAC)。现在,当您运行应用程序并尝试调用任何使用RestSharp的方法时,同时,Runtime(CLR)会尝试寻找版本为4.2.0.0
的System.Net.Http
组件,如果找不到想要的版本,就会掷回System.IO.FileNotFoundException
例外状况,并显示下列错误消息。*未能加载文件或程序集“System.Net.Http,Version=4.2.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或它的某个依赖项。系统找不到指定的文件。
这里可以看到How the Runtime Locates Assemblies?
**解决方案:**只需在启动项目的
web.config
或app.config
中添加以下配置。此配置指示运行库在查找
0.0.0.0
到4.2.0.0
之间的任何版本的System.Net.Http
程序集时,仅解析4.0.0.0
版本的System.Net.Http
程序集。下面是完整的架构:
yqyhoc1h6#
system.net.http库现在作为.Net标准框架的一部分分发,这可能会导致问题,通常是在将Nuget包更新到较新版本时。
对我有效的解决方案是从Nuget中删除System.Net.Http包(以及依赖于它的格式化程序包),并删除app.config中对system.net.http库的所有引用(它们通常是dependantAssemblies)。
最后,编辑项目文件,从框架中添加对http的引用,如下所示:
5n0oy7gb7#
不太好,但可以使用 bindingRedirect 作为替代解决方案-如果您有-
则移除“useLegacyV 2 RuntimeActivationPolicy”属性会有所帮助,因为它不会还原为旧CLR。