找不到类型或名称空间"HttpClient"

chr*_*tok 11 .net c#

我对这个参考错误感到失望.我添加了Microsoft.Net.HttpNuget包,确保将System.Net.Http引用添加到页面,将System.Net.Http命名空间导入到类中.没有.我甚至使用空白模板从头开始重新创建项目.

有人可以提供一些想法吗?谢谢!

小智 12

不确定你是否已经尝试过这个,但是:

我所做的就是在项目引用中添加system.net.http.

在Project Explorer中,右键单击引用 - >添加引用,然后勾选dll列表中的相关复选框,然后单击OK


小智 8

在我的视觉工作室2017 Xamarin.forms项目中我遇到了同样的问题.如果我右键单击我的解决方案,则有"管理NuGet包..."如果我选择它,在"浏览"中,我查找"System.net"我选择了找到的项目,在此输入图像描述 选中项目的复选框,然后单击"安装"


st_*_*nov 6

使用完全限定名称:

public void MyMethod()
{
    System.Net.Http.HttpClient client = ....
}
Run Code Online (Sandbox Code Playgroud)

代替:

using System.Net.Http
public class MyClass
{
    public void MyMethod()
    {
        HttpClient client = ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这应该会告诉您您遇到了什么问题。如果是名称冲突...


Rya*_*yan 5

如果目标是 4.6.2 或更高版本,只要安装了任何 nuget 包,就忽略它们,因为它们是现有引用的依赖项。

然后,打开引用 dll 的 .csproj 文件并删除任何特定的版本关联,这样引用现在看起来像这样(旧的 csproj 格式):

<Reference Include="System.Net.Http" />
Run Code Online (Sandbox Code Playgroud)

以前,我的配置看起来像这样:

<Reference Include="System.Net.Http, Version=4.1.1.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
  <HintPath>..\packages\System.Net.Http.4.3.3\lib\net46\System.Net.Http.dll</HintPath>
  <Private>True</Private>
  <Private>True</Private>
</Reference>
Run Code Online (Sandbox Code Playgroud)

这将强烈鼓励 msbuild 将 GAC 中的版本用于目标框架。就我而言,我的目标是 4.7.2,当它警告由于 nuget 包而导致版本冲突时,它使用了该版本。