找不到引用的组件'System.Net.Http'

时间:2017-10-21 20:08:29

标签: .net nuget visual-studio-2017

我在VS2017中创建了一个针对.NET Framework 4.6.1的新项目,当我向System.Net.Http添加NuGet包引用时,我收到以下警告及其所有依赖性:< / p>

The referenced component 'System.Net.Http' could not be found.

项目(及其解决方案)编译,但是当我运行时,我得到一个异常,因为在尝试实例化HttpClient的实例时无法找到程序集。

我已确认HintPath指向packages文件夹中的正确位置,而DLL的大小为193 KB。我删除了引用,并尝试直接添加对DLL的引用,但没有成功。

我还试图通过Framework&gt;添加引用。程序集,但无论我做什么,引用都有一个警告图标,引用的属性如下所示:

System.Net.Http Reference Properties

我尝试了以下内容:

  • 删除并添加NuGet参考
  • 删除引用,清除NuGet缓存,然后添加NuGet引用
  • Update-Package -reinstall与适当的参数
  • 一起使用
  • 将解决方案复制到另一台计算机并尝试(结果相同)

似乎无论我尝试什么,我都无法获得工作的参考。我还应该尝试其他什么?

3 个答案:

答案 0 :(得分:7)

TLDR - Service Fabric服务不适用于.NET Standard包的项目引用;相反,使用完整的.NET Framework用于类库。

经过几个小时的反复试验,我能够确定问题不在于System.Net.Http包本身,而是在解决方案中引用另一个项目的结果。

如果我引用了针对netstandard1_6的项目,则System.Net.Http引用(包括依赖包)将无法加载或解析。一旦我删除了项目参考,他们加载好了!最终,我将我引用的项目更改为&#34; regular&#34; .NET Framework项目,添加了对该版本的引用,我的所有引用都很好。

我们怀疑有一些事情,但不确定哪个是最终原因:

  • .NET Standard的项目文件格式与.NET Framework不同
  • Service Fabric项目需要x64,而.NET Standard项目需要 Any CPU

任何其他解释将不胜感激!

答案 1 :(得分:2)

今天我遇到了这个问题。在我的情况下,原因是我将NuGet选项中的依赖行为设置为“最低”,从而下载依赖包的最低兼容版本。不幸的是,这有时意味着它下载的软件包版本与项目的运行时版本不兼容。在我的例子中,软件包System.Net.Http.Formatting.Extensions导致安装了System.Net.Http版本2.20 ...,这是我的.NET 4.7.1项目无法识别的。

在解决方案的Nuget包管理器的“更新”选项卡上,它将显示这些包的更新。安装它们,你的问题应该解决。 或者,在安装NuGet包时将依赖关系行为设置为最高。

答案 2 :(得分:0)

有时删除所有现有参考很有用。 然后重新加载项目,并删除引用中的每个错误图标。 然后手动添加每个参考。