2014-02-28 1 views
6

휴대용 클래스 라이브러리는 라이브러리 디자이너가 지원하도록 선택한 프레임 워크의 하위 집합을 기반으로 여러 플랫폼에서 사용할 수 있다는 것을 알고 있습니다.일부 NuGet 패키지는 왜 Portable Library와 Platform Specific One을 모두 제공합니까?

NuGet을 통해 사용할 수있는 많은 라이브러리에는 플랫폼 관련 구현이 포함되어 있으며이를위한 필요성이 궁금합니다. 예를 들어

Microsoft.Net.Http 패키지를 포함하여 많은 변화와 함께 제공 :

  • 닷넷 4.0 버전
  • WinRT (윈도우 스토어 앱) 윈도우 8 버전
  • 휴대용 클래스 라이브러리 지원 넷 4.0, WinRT 및 기타

왜 .Net 4.0 또는 WinRT 버전의 라이브러리를 배포해야합니까? 휴대용 클래스 라이브러리가 충분하지 않습니까?

내 자신의 사용자 지정 휴대용 라이브러리를 디자인 할 때이 규칙을 준수해야합니까?

명확하게 말하면, 플랫폼 특정 코드의 일부만 필요로하는 휴대용 클래스 라이브러리에 대해 말하는 것이 아닙니다. 그것들은 대개 .PlatformServices로 끝나는 관리되는 라이브러리를 가지고 있습니다. 하지만 NuGet 패키지가 배포하는 핵심 라이브러리에 대해 말하고 있습니다.

답변

5

물론 PCL 버전으로도 충분할 수 있습니다. 그러나 자신의 PCL 클래스 라이브러리 프로젝트를 만들 때 알아야 할 것이므로 실제로 PCL 프로젝트에서 사용할 수있는 .NET Framework 클래스 및 메서드의 하위 집합은 다소 작습니다. 이 하위 집합은 전체 .NET Framework를 가져 와서 다른 플랫폼에서 작동하지 않는 부분을 빼서 ​​만듭니다.

가장 제한적인 플랫폼은 Silverlight 및 Phone7이며 .NETCore 버전의 CLR을 기반으로합니다. Store와 Phone8은 WinRT API를 통해 제공되는 서비스를 기반으로합니다. 이 중 하나를 목표로 삼아 라이브러리에서 할 수있는 일의 수를 빠르게 줄입니다.

Microsoft.Net.Http 패키지는 제한된 플랫폼 중 하나에 제한되지 않는 경우에도 HTTP 관련 메서드 및 속성을 사용할 수 있도록 최적화되었습니다. 패키지 하위 디렉토리에서 찾을 수 있습니다. IntelliSense가 제공하는 System.Net.Http.Extensions.xml 파일은 한 플랫폼에서만 가능하지만 다른 플랫폼에서는 가능하지 않은 것을 보여줍니다. 나는 참조 :

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

이러한 속성에 매핑되어 있습니다 마세요 확장 방법.

관련 문제