使用VS2017,我已经在一个空解决方案中创建了一个(.NET Framework 4.6.2)。然后我在那里安装了System.Net.Http 4.3.2包,并在Class1
的构造函数中使用了HttpClient
类。
接下来我创建了一个ConsoleApp(.NET Framework 4.6.2),引用了ClassLibrary并在Main
方法中实例化了Class1
。
现在运行ConsoleApp会导致运行时异常:
未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集'System.Net.Http,Version=4.1.1.1,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a'或其其中之一的依赖项。系统找不到指定的文件。 ClassLibrary1.Class1..ctor() at ConsoleApp1.Program.Main(String[] args) in [...]
在详细的构建日志中,我看到了这个消息:
假设我无法从 ConsoleApp 中删除对 System.Net.Http
的引用,因为我在一个真实的项目结构中遇到了这种情况。
2> "System.Net.Http,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a"和 "System.Net.Http,Version = 4.1.1.1,Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a"之间存在冲突。
2> 选择了“System.Net.Http,Version = 4.0.0.0,Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a”,因为它是主要的, 而“System.Net.Http,Version = 4.1.1.1,Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a”不是。
- 尝试使用
System.Net.Http
参考的Specific Version
参数未能解决问题。 - 指定
<bindingRedirect oldVersion="0.0.0.0-4.1.1.1" newVersion="4.1.1.1" />
未能解决问题。
我已经在谷歌上搜索了这个问题,发现它是一个常见的问题,但是我没有找到一个清晰的解释来说明实际发生了什么以及如何一般性地解决这种情况。
无法加载文件或程序集 System.Net.Http 版本 4.1.1.0
无法加载文件或程序集“System.Net.Http”或其某一个依赖项
关于冲突: