首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >System.Net.Http vs Microsoft.Net.Http

System.Net.Http vs Microsoft.Net.Http
EN

Stack Overflow用户
提问于 2015-06-25 22:27:50
回答 3查看 35.1K关注 0票数 94

我使用的是ASP.NET内核。我想使用HttpClient,但我注意到提供了两个NuGet包。我该用哪一个?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-25 23:04:27

取决于版本。根据下面的描述,旧的System.Net.Http包( 2.0包)是为了支持Microsoft.Http.Net而被弃用的遗留包:

传统包,System.Net.Http现在包含在'Microsoft.Net.Http‘包中。

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

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

已为csproj更新

从.NET标准2.0开始,已经包含了System.Net.HttpClient包,并且在您针对netstandard2.0时可以使用它。如果出于某种原因,您仍然希望在完整的.NET和.NET核心中引用它,您可以将以下内容添加到您的csproj文件中:

代码语言:javascript
复制
<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核心,则必须将System.Net.Http程序集添加到frameworkAssemblies元素。例如:

代码语言:javascript
复制
"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
    }
  }
}
票数 68
EN

Stack Overflow用户

发布于 2018-09-14 22:30:34

对于任何对此感兴趣的人,请参阅Immo Landwerth (微软.NET上的项目经理) tweeted

"HttpClient最初是一个NuGet包(带外),在4.5中也被添加到了.NET框架中(在盒子里)。

在.NET核心/ .NET标准中,我们最初试图将.NET平台建模为一组包,其中在盒内还是带外不再重要。然而,这比我们预期的更加混乱和复杂。

因此,我们在很大程度上放弃了使用核心/标准2.0将.NET平台建模为NuGet图的想法。

一般的答案是:

使用.NET Core2.0和.NET标准2.0,您根本不需要引用SystemNetHttpClient NuGet包。不过,它可能会从1.x依赖项中拉出来。

.NET框架也是如此:如果你的目标是4.5或更高版本,你通常应该使用内置版本而不是NuGet包。同样,您可能最终会在PCL 1.x和.NET依赖项中使用它,但是直接针对.NET框架编写的代码不应该使用它。

遗留包的预期模型是:如果您使用来自.NET框架4.5+,.NET核心2+,.NET标准2+的包,包只转发到平台提供的实现,而不是带来它自己的版本。

然而,这并不是在所有情况下都会发生的事情: HTTP Client包将(部分)替换.NET框架上的内置组件,后者碰巧对一些客户有效,而对另一些客户无效。

最重要的是,我们有.NET框架常见的绑定问题,所以只有在添加绑定重定向的情况下,这才能很好地工作。耶!

因此,作为一个库作者,我的建议是避免依赖这个包,而更喜欢.NET Framework4.5、.NET Core2.0和.NET标准2.0中的内置版本。“

https://twitter.com/terrajobst/status/997262020108926976

票数 24
EN

Stack Overflow用户

发布于 2016-05-05 20:48:47

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

因此,如果您只针对.NET框架或.NET核心,则可以使用System.Net.Http。否则,Microsoft.Net.Http将是更好的选择,因为它可能是下一代。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31053243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档