2014-04-09 1 views
4

주요 .NET 및 Mono 플랫폼을 대상으로하는 이식 가능한 클래스 라이브러리를 유지 관리하고 있습니다. 핵심 PCL은 프로필 147 (.NET 4.03 + Windows Store + Silverlight 5 + Windows Phone 8)을 사용하지만 몇 가지 기술적 인 이유로 NuGet 패키지는 코어 PCL (프로필 147), .NET 4 및 Silverlight 5의 세 가지 버전으로 구성됩니다. 실제로 핵심 PCL의 프로파일을 바꿀 수 있고 .NET 4.03을 .NET 4.5로 대체하고 Silverlight 5를 삭제할 수 있습니다. 내 lib가 다른 PCL에서 소비되는 경우를 대비해이 작업을 수행하지 않습니다. 가장 넓은 PCL.PCL 프로파일을 선택할 때 레거시 .NET 플랫폼을 타겟팅하지 않는 이유

그럼 내 첫 번째 질문은이 가정이 올바른지 여부입니다. 예 : 별도의 SL5 구현이 있어도 SL5를 지원하는 PCL 프로파일을 선택하면 PCL에 친숙해집니다. SL5를 목표로하는 또 다른 PCL이 내 라이브러리를 참조 할 수 있습니다.

이 가정이 맞다면, 다음 질문은 이것이 그만한 가치가 있는지의 여부입니다. 이제는 Xamarin 개발에 대한 PCL 프로파일 선택 사항이 널리 보급되었으므로 .NET 4를 대상으로하는 프로필은 없습니다. 그리고 Silverlight를 대상으로하지 않는 프로필 78이 좋습니다. 프로필을 선택하지 않으면 결과에 대한 자세한 설명을 찾지 못했기 때문에 프로필 147에 머물러서 내가 잃어버린 것이 무엇인지 알 수 없습니다. 알려진 문제가 있고 기능이 지원되지 않는다면 당연히 좀 더 현대적인 프로필이지만, 필자가 이전에 썼 듯이 가능하면 더 넓은 플랫폼 세트를 목표로 삼고 싶습니다.

답변

2

폭과 기능의 균형이 맞지 않습니다. Silverlight를 사용하여 프로필을 타겟팅하면 원하는 API가 모두 지원됩니다. 너는 폭 넓은 선택의 여지가 없다. 테스트 비용을 제외하면 자신이나 고객을 제한 할만한 포인트가 없습니다.

그러나 Silverlight 또는 다른 플랫폼을 사용하여 프로필을 선택하면 특정 기능을 사용할 수 없으며 (예 : Microsoft BCL Portability Pack을 통해 대역 외 제공되지 않는 기능) 이것이 바로 어려운 결정. 이 페이지의 지원 기능 표 Cross-Platform Development with the Portable Class Library은 특정 플랫폼을 타겟팅하여 잃어버린/얻은 기능을 보여줌으로써이 결정을 도와줍니다. 휴대용 프로젝트의

내가 가장 인기있는 대상을 압도한다 "Profile78"(.NET 프레임 워크 4.5, 윈도우 8, 전화 번호 8, Xamarin.Android, Xamarin.iOS) 볼, 내부적으로 데이터를 수 찾고 (~ 45 % 이것을 목표로하십시오.) 이것은 놀라운 일이 아닙니다. 합리적인 대규모 기능을 지원하는 광범위한 현대 플랫폼을 대상으로합니다. 이 프로파일이 목표로하는 이러한 플랫폼은 우리가 "현대적인 표면적"이라고 생각하는 것을 지원하기 때문에 기존 표면 영역 (Silverlight, .NET Framework 4)을 지원하는 플랫폼을 대상으로하는 API 표면과 프로파일을 더 공유 할 수 있습니다. 이 두 표면 영역의 차이점은 여기에서 자세히 설명합니다 : What is .NET Portable Subset (Legacy)?.

+0

데이비드 감사합니다. Profile78의 선택이 얼마나 압도적인지 몰랐습니다. 참조 질문에 대한 귀하의 대답은 우수합니다. 실제로 나는 그것을 전에 읽었지 만, 그 당시 나는이 결정에 직면하지 않았으므로 그것을 다시 읽는 것이 매우 도움이되었습니다. –

관련 문제