从带有可移植类库的 NuGet 包瞄准 .NET 4 的最佳策略

2024-02-03

我有一个当前仅针对 .NET 4 实现的库的 NuGet 包。但是我已经移植了库代码以支持各种平台(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 还有其他改进,但这些改进不会影响我的库。


是的,我认为最好的办法是创建两个版本的库,一个针对 .NET 4,另一个针对您支持的其他平台的可移植库。使用源文件链接,这样您就不必拥有源代码的两个不同副本,只需两个不同的 Visual Studio 项目即可。

不过,您只需要一个 NuGet 包。将 .NET 4 版本放在 lib/net40 中,将便携式版本放在 lib/portable-net403+win8+wp8+sl5 中(或您决定支持的任何平台组合)。然后 NuGet 将根据项目的目标安装正确的版本。需要 NuGet 2.1 或更高版本才能适用于便携式版本。

关于 .NET 4.0.3 的问题,它是关于为库的使用者提供灵活性。使用您的库的人正在使用它来创建应用程序。支持 .NET 4 对他们来说可能不像对您那么重要。通过在您的库的可移植版本中支持 .NET 4.0.3,这意味着如果他们选择在其应用程序中需要 .NET 4.0.3,那么他们将能够从自己的可移植库中更轻松地使用您的库跨平台分享他们的应用程序代码 http://blogs.msdn.com/b/dsplaisted/archive/2012/08/27/how-to-make-portable-class-libraries-work-for-you.aspx.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从带有可移植类库的 NuGet 包瞄准 .NET 4 的最佳策略 的相关文章

随机推荐