我有一个库的 NuGet 包,目前仅针对 .NET 4 实现。但我已经移植了库代码以支持各种平台(WinRT、SL5、WP8),所以理想情况下我想将其打包为可移植类库(PCL ) 以简化维护。但是该库正在使用 LINQ to XML(XELements 等),需要针对 .NET 4.0.3 并在客户端计算机上安装 .NET 4.0.3。
所以我对如何定位普通的 .NET 4 感到两难。如果不是关于 NuGet 包并且我可以控制用户群,我可以简单地声明为安装 .NET 4.0.3 运行时的先决条件。但是,我不想以任何方式限制用户群,所以看起来我必须拥有两个版本的库:针对 .NET 4.5、SL5 和 WP8 的可移植版本,以及仅针对 .NET4 的不可移植版本。愚蠢的是,这两个库将具有完全相同的代码,因为 .NET 4 当然支持 LINQ to XML,只是 PCL 在面向 .NET 4 时没有这种支持。
我的第一个问题是这似乎是一个正确的策略吗?另一种方法是从 PCL 中删除所有与 XElement 相关的代码,并将其放在不可移植的部分中,但这似乎不正确,因为所有库的代码都完全相同。
第二个问题是从 PCL 定位 .NET 4.0.3 是否有意义:如果我有针对 .NET 4 的单独版本,安装了 .NET 4.0.3 运行时的用户是否会从获得 PCL 而不是普通的.NET 4 版本?我知道 .NET 4.0.3 有其他改进,但不会影响我的库。