【发布时间】:2013-01-06 10:55:55
【问题描述】:
我有一个库的 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 有其他改进,但不会影响我的库。
【问题讨论】:
-
您确定 PCL 不支持 XElement 吗?我知道它不在早期版本的 PCL 上,但我有广泛使用 XElement 的 PCL。
-
不适用于初始 NET 4.0,它必须升级到 4.0.3,请参阅此处的兼容性列表:msdn.microsoft.com/en-us/library/gg597391.aspx
标签: nuget portable-class-library