System.Net.Http和Microsoft.Net.Http,应该使用哪一个?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (24)

我正在使用ASP.NET Core。我想使用,HttpClient但我注意到有两个NuGet包提供。我使用哪一个?

提问于
用户回答回答于

取决于版本。旧的System.Net.Http软件包(2.0版本)是旧版软件包,Microsoft.Http.Net根据描述不赞成使用旧软件包:

旧版软件包System.Net.Http现在包含在“Microsoft.Net.Http”软件包中。

它们的存在是为了提供HttpClient以前的.NET版本和可移植类库。你应该Microsoft.Net.Http在那种情况下使用。

由于使用的是.NET Core,因此您应该使用最新的System.Net.Http软件包(例如4.3.3)。

csproj

从.NET标准2.0开始,该System.Net.HttpClient包已包含在目标中并可用netstandard2.0。如果由于某种原因,仍然想要为完整的.NET和.NET Core引用它,可以将其添加到csproj文件中:

<ItemGroup Condition=" '$(TargetFramework)' == 'net461' ">
    <!-- // HttpClient for full .NET -->
    <Reference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' ">
    <!-- // HttpClient for .NET Core -->
    <PackageReference Include="System.Net.Http" Version="4.3.3" />
</ItemGroup>

如果你使用的是project.json

如果project.json同时针对完整的.NET和.NET Core,则必须将该System.Net.Http程序集添加到frameworkAssemblies元素中。例如:

"frameworks": {
  "net451": {
    "frameworkAssemblies": {
      "System.Net.Http": "4.0.0.0" // HttpClient for full .NET
    }
  },
  "netstandard1.3": {
    "dependencies": {
      "System.Net.Http": "4.1.0", // HttpClient for .NET Core
    }
  }
}
用户回答回答于

Microsoft.Net.Http需要额外的Microsoft.Bcl依赖性。

为此,如果只是针对.NET Framework或.NET Core,那么System.Net.Http很好。否则,Microsoft.Net.Http将会是更好的选择,因为它可能是下一代。

扫码关注云+社区