gpt4 book ai didi

c# - NuGet 包应支持哪些 .NET 版本以最大限度地提高其可用性和功能?

转载 作者:IT王子 更新时间:2023-10-29 04:44:08 27 4
gpt4 key购买 nike

长话短说:

  • 鉴于:我编写了一个具有相对可移植功能的库(例如,Left.Pad.©.dll)。我想通过 NuGet 提供它。

  • 要求:如果有人想在任何版本的任何平台上使用我的库,在任何版本的任何平台上 操作系统,通过在任何 IDE 或任何 代码编辑器中编写代码安装任何 更新,他们应该能够做到这一点。

  • 问题:最小 集是什么 NuGet target frameworks 实现那个?

  • 奖励问题:如果有任何不应作为目标的“死”框架,或者在选择目标框架时应考虑的其他事项,您也可以提及。


思想(旧版):

NuGet 包支持 multiple .NET Framework versions and profiles例如,一个包可以提供net20、net30、net35、net40、net45、sl3、sl4、sl5等版本。但是,假设包的功能并不总是存在差异,提供大量版本会浪费构建时间和包大小,并导致不必要的复杂性。另一方面,仅为支持的最低框架版本提供包可能会导致功能缺失,例如 .NET 4 支持多个 CLR 版本的进程内并排执行,但以前的版本不支持,因此此功能如果仅提供 .NET 3.5 版本,将会丢失(我不确定;我从未使用过它,也不知道详细信息)。如果提供了 PCL 版本,我认为逻辑很简单:只需排除 PCL 涵盖的版本。

最佳答案

在撰写本文时,最简单的方法是创建一个 .NET Standard 1.1项目。支持

  • .NET Core 1.0 及更高版本
  • .NET Framework 4.5 及更高版本
  • Mono、Xamarin、Windows Phone 和 more...

几乎所有的现代平台。如果你想支持旧平台,例如。 .NET Framework 3.0,将其添加为 NuGet 中的单独“文件夹”。这样,较新的 .NET Core 应用程序仍然可以使用您的包。


更多信息

.NET Standard 替代了 PCL .您可以使用 PCL 定位的最低 .NET Framework 是 4.0,这并不比 .NET Standard 1.1 的 4.5 低多少(因此不会使您的包更易于访问)。

PCL 似乎也不支持 .NET Core,而 .NET Standard 几乎支持所有平台: Table of .NET Standard support

另请注意 according to Microsoft, only .NET Framework 3.5 SP1 and .NET Framework >= 4.5.2 are currently supported .所有其他 .NET Framework 版本的生命周期都已结束,将不会获得任何更新。 Windows Phone 也死了,Silverlight 也一事无成。

作为@Lex Li评论中提到,.NET Standard 1.1 的 API 表面非常低,这意味着可能缺少一些重要的 API。因此,大多数 NuGet 包使用更高的 .NET Standard 版本。 建议尽可能使用最低的 .NET Standard 版本。

因此,借助 .NET Standard 1.1,您将支持绝大多数现代框架。遗憾的是,我找不到任何 .NET Framework 分布统计信息...


如果您真的想让您的软件包可用于所有 平台,请查看at the possible target platforms for NuGet .我认为您至少需要 net11netstandard1.0,也许添加一些 Silverlight 和 .NET MicroFramework 支持...

关于c# - NuGet 包应支持哪些 .NET 版本以最大限度地提高其可用性和功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33177632/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com