C# System.Net.Http与Microsoft.Net.Http的当前状态

C# System.Net.Http与Microsoft.Net.Http的当前状态,c#,nuget,httpclient,base-class-library,C#,Nuget,Httpclient,Base Class Library,我对HttpClient的打包感到困惑。早些时候,它是作为Microsoft.Http.NetNuGet包的一部分发布的,而System.Net.Http被认为是遗留的。现在看起来正好相反:所有平台都有一个新的System.Net.Http包,而且Microsoft.Net.Http已经有一段时间没有更新了,据微软开发团队的人说,它将被弃用 问题如下: 我们可以用(最新的)System.Net.Http替换对Microsoft.Net.HttpNuGet软件包的依赖关系吗 旧式.NET 4.0

我对
HttpClient
的打包感到困惑。早些时候,它是作为
Microsoft.Http.Net
NuGet包的一部分发布的,而
System.Net.Http
被认为是遗留的。现在看起来正好相反:所有平台都有一个新的
System.Net.Http
包,而且
Microsoft.Net.Http
已经有一段时间没有更新了,据微软开发团队的人说,它将被弃用

问题如下:

  • 我们可以用(最新的)
    System.Net.Http
    替换对
    Microsoft.Net.Http
    NuGet软件包的依赖关系吗
  • 旧式.NET 4.0平台是否仍应使用
    Microsoft.NET.Http
    ? 那么非Windows平台(iOS、Android)呢?新的
    System.Net.Http
    支持它们,但我记得使用
    Microsoft.Net.Http
    我必须另外安装
    Microsoft.Bcl.Build
    Microsoft.Bcl
    ,以便跨平台工作
    System.Net.Http
    不依赖于它们。可以跳过Bcl包吗
  • System.Net.Http
    缺少一些Http扩展方法,如
    SupportsPreAuthenticate
    ,尝试调用这些方法会导致运行时错误(缺少方法)。我们应该如何处理

这已经存在很长一段时间了,而且仍然令人困惑。我自己也看到过这样的消息传递,但到目前为止,它似乎是正确的选择,至少对于Windows平台上的.NET来说是这样,并且没有外部依赖关系

对于.NETCore,我已经使用了,尽管它确实需要。除非您遇到问题,否则我建议保留遗留系统,尤其是因为这些名称空间似乎是移动的目标

如果这对您来说还不够混乱,那么来自
System.Net.Http
的链接使用!该实现适用于Windows应用商店应用程序


也许明年这一切都会再次改变。

可能的重复只是为了给出改变的可能原因:Windows平台和其他操作系统之间的网络堆栈功能略有不同。例如,我在Mono环境中使用为Windows编写的.NET应用程序时遇到问题。这一变化可能意味着最终可能实现真正的平台独立性,这可能是他们将内容移动到系统名称空间的原因。从.NET Core中查找对此Http包的引用,这可能会回答您的问题。查看从Microsoft.NET.Http nuget下载的包,HttpClient的唯一实现是针对net40、portable-net40+sl4+win8+wp71+wpa81、sl4-windowsphone71。对于剩下的平台,没有实现,所以我想选择系统一个?OMG。。难道我们不能从权威人士那里得到一个规范的答案吗(