首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么有些NuGet包同时提供可移植库和特定于平台的库?

为什么有些NuGet包同时提供可移植库和特定于平台的库?
EN

Stack Overflow用户
提问于 2014-02-28 12:49:43
回答 1查看 282关注 0票数 6

我的理解是,基于库设计人员选择支持的框架子集,可在许多平台上使用便携式类库。

我注意到,通过NuGet提供的许多库还包括一个特定于平台的实现,并想知道这有什么需要。

例如,Microsoft.Net.Http包有许多变体,包括:

  • NET4.0版
  • WinRT (Windows应用程序) Windows 8版本
  • 支持Net4.0、WinRT等的便携式类库

为什么需要分发单独的.Net 4.0或WinRT版本的库?便携式类库还不够吗?

当我设计我自己的自定义便携式库时,我应该遵守这个约定吗?

首先,我并不是说便携式类库需要一小部分特定于平台的代码才能工作。它们通常有一个伴随的托管库,其名称以.PlatformServices结尾。但我说的是由NuGet包分发的核心库。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-28 14:31:33

当然,PCL版本可能足以满足您的需要。但是,当您创建自己的PCL类库项目时,您一定会发现.NET框架类和方法的子集非常小。该子集是通过获取完整的.NET框架并减去不能在另一个平台上工作的部分来创建的。

限制最大的平台是Silverlight和Phone7,它们基于.NETCore版本的CLR。以及存储和Phone8,基于通过WinRT api提供的服务。瞄准任何这些都会迅速减少您在库中可以做的事情的数量。

对Microsoft.Net.Http包进行了优化,如果您不受其中一个受限平台的限制,仍然可以使用一些与Http相关的方法和属性。您可以在包子目录中查看,提供IntelliSense的IntelliSense文件向您展示了在一个平台上什么是可能的,而不是在另一个平台上。我看到:

  • HttpWebRequest.AllowAutoRedirect
  • AuthenticationManager.PreAuthenticate
  • HttpWebRequest.ProtocolVersion
  • HttpRequestHeaders.TransferEncodingChunked
  • HttpClientHandler.UseProxy

请注意,这些属性是用扩展方法映射的。

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

https://stackoverflow.com/questions/22095703

复制
相关文章

相似问题

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