选择PCL概要文件时不针对旧版.NET平台的原因

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。但我不这样做是因为我的库可能会被其他PCL使用 - 因此,我想使用最广泛的PCL。
那么我的第一个问题是,这种假设是否正确。例如,即使我有单独的SL5实现,选择支持SL5的PCL配置文件会使其更加PCL友好,例如,另一个针对SL5的PCL将能够引用我的库。
如果这种假设是正确的,那么我的下一个问题是,这是否值得。现在,对于Xamarin开发,有流行的PCL配置文件选择,但其中没有一个针对.NET 4。而且推荐的配置文件是78,不支持Silverlight。我还没有找到关于不选择这些配置文件的后果的详细说明,所以我无法确定留在配置文件147会失去什么。如果已知存在问题和不支持的功能,当然我会切换到更现代的配置文件,但正如我之前所写,如果可能的话,我想针对更广泛的平台集。
1个回答

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%)。这并不奇怪。它针对广泛的现代平台,具有相当大的功能支持。此配置文件所针对的平台还支持我们认为的“现代表面积”,因此与针对支持我们遗留表面区域(Silverlight、.NET Framework 4)的配置文件相比,具有更多共享API表面。这两个表面区域之间的差异在这里详细介绍:什么是.NET可移植子集(Legacy)?

谢谢你,David。我不知道Profile78的选择有多么令人不知所措。你对参考问题的回答非常出色。实际上,我之前已经读过它,但那时我没有面临这个决定,所以重新阅读它非常有帮助。 - Vagif Abilov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接