选择PCL配置文件时未针对旧版.NET平台的原因

时间:2014-04-09 06:37:24

标签: c# .net mono cross-platform portable-class-library

我正在维护一个针对主要.NET和Mono平台的可移植类库。核心PCL使用配置文件147(.NET 4.03 + Windows Store + Silverlight 5 + Windows Phone 8),但由于某些技术原因,NuGet包由三个版本组成:核心PCL(配置文件147),.NET 4和Silverlight 5。实际上,我可以更改核心PCL的配置文件,并用.NET 4.5替换.NET 4.03并删除Silverlight 5.我不会这样做,以防我的lib将从其他PCL使用 - 因此我想使用最广泛的PCL。

所以我的第一个问题是这个假设是否正确。例如。即使我有单独的SL5实现,选择具有SL5支持的PCL配置文件使其对PCL更友好,例如另一个针对SL5的PCL将能够引用我的lib。

如果这个假设是正确的,我的下一个问题是这是否值得。现在Xamarin开发中有流行的PCL配置文件选择,它们都不是针对.NET 4.而推荐的是配置文件78,它不针对Silverlight。我没有找到不选择这些配置文件的后果的详细描述,所以我无法通过保留配置文件147来弄清楚我失去了什么。如果有已知问题而且不支持功能,我当然会转向更现代的个人资料,但正如我之前写的,如果可能的话,我希望更广泛的平台设置。

1 个答案:

答案 0 :(得分:2)

这是广度和功能之间的权衡。如果使用Silverlight定位配置文件支持您想要或需要的所有API,那么请坚持使用它。你别无选择,争取广度。排除测试成本,没有必要限制自己或消费者。

但是,当选择使用Silverlight或其他平台的配置文件时,会阻止您使用特定功能(并且该功能尚未在带外提供,例如通过Microsoft BCL Portability Pack),这是您需要的地方做出艰难的决定。此页面上的支持功能表Cross-Platform Development with the Portable Class Library可以通过针对特定平台展示您丢失/获得的功能来帮助您做出此决定。

在内部查看数据,我可以看到“Profile78”(.NET Framework 4.5,Windows 8,Phone 8,Xamarin.Android,Xamarin.iOS)压倒了最受欢迎的目标(约45%的便携式项目目标)这个)。这并不奇怪。它以大量现代平台为目标,具有合理的大功能支持。这个配置文件所针对的这些平台也支持我们认为的“现代表面区域”,因此有更多的共享API表面与配置文件,这些平台支持我们的传统表面区域(Silverlight,.NET Framework 4)。这两个表面区域之间的差异在此详细介绍:What is .NET Portable Subset (Legacy)?