为什么我不能在System.Net.Http引用的解决方案中使用System.Net.Http包?

ast*_*tef 9 .net c# visual-studio-2017

使用VS2017,我在一个空的解决方案中创建了一个ClassLibrary(.NET Framework 4.6.2).然后我在那里安装了System.Net.Http 4.3.2包,并HttpClientClass1构造函数中使用了类.

然后我创建了一个ConsoleApp(.NET Framework 4.6.2),引用了ClassLibraryClass1Main方法中实例化.

现在运行ConsoleApp会导致运行时异常:

未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集'System.Net.Http,Version = 4.1.1.1,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一.该系统找不到指定的文件.在[...]中的ConsoleApp1.Program.Main(String [] args)的ClassLibrary1.Class1..ctor()中

在详细的构建日志中,我看到以下消息:

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.HttpConsoleApp中删除引用,因为我在实际项目结构中有这种情况.

  • 与播放Specific Version的参数System.Net.Http 引用并没有帮助.
  • 指定<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"或其依赖项之一

关于冲突:

在冲突dll引用之间进行选择时,.NET对"主要"的含义是什么?

发现无法解析错误的同一依赖程序集的不同版本之间发生冲突

Kod*_*oid 2

我想知道为什么您选择使用 NuGet 包而不是使用引用管理器来加载适当的程序集。默认情况下VS的很多项目模板都包含System.Net.Http。如果您使用 NuGet 包资源管理器来安装程序集,那么以下两个选项之一应该会有所帮助:

  1. 删除 NuGet 包并使用参考管理器中指定的版本(在程序集/框架下查看),尽管我打赌这已经被选中。

  2. 在引用管理器中,取消选择分配的 System.Net.Http 版本并使用随 NuGet 安装的版本。

我个人认为选项 1 更好,除非您绝对需要仅在 NuGet 最新版本中找到的特定内容。


归档时间:

查看次数:

5802 次

最近记录:

7 年,5 月 前