Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在维护一个小程序包的同时,为了实现.NET类库的最大兼容性,应使用哪些.NET目标?_.net_.net Core_.net Standard - Fatal编程技术网

在维护一个小程序包的同时,为了实现.NET类库的最大兼容性,应使用哪些.NET目标?

在维护一个小程序包的同时,为了实现.NET类库的最大兼容性,应使用哪些.NET目标?,.net,.net-core,.net-standard,.net,.net Core,.net Standard,NET“系统”(.NET Framework、.NET Standard、.NET Core、.NET 5)随着时间的推移而不断发展,现在由各种衍生产品(Framework、Standard、Core、.NET 5)、API版本(CLR)和版本(.NET Framework 2.0、3.5、4.0、4.5等)组成 作为.NET“系统”的类库创建者,我希望提供广泛的兼容性:我的库应该能够在各种派生版本、API版本和版本中使用,而不会在编译时导致错误/警告(例如,“一个或多个包不兼容…”) 我的源代

NET“系统”(.NET Framework、.NET Standard、.NET Core、.NET 5)随着时间的推移而不断发展,现在由各种衍生产品(Framework、Standard、Core、.NET 5)、API版本(CLR)和版本(.NET Framework 2.0、3.5、4.0、4.5等)组成

作为.NET“系统”的类库创建者,我希望提供广泛的兼容性:我的库应该能够在各种派生版本、API版本和版本中使用,而不会在编译时导致错误/警告(例如,“一个或多个包不兼容…”)

我的源代码旨在为.NET Framework 2.0、3.5、4.0、4.5、4.8、.NET标准2.0、.NET核心2.1、.NET核心3.1、.NET 5“编译”

现在,我想提供一个(NuGet)包,其中包含最低限度的.NET目标,但保持与所有“主要的.NET”风格的兼容性

我的计划是在CLR更改(.NET Framework 2.0,4)后为第一个版本提供.NET目标,用于.NET标准2.0、.NET Core 2.1、.NET Core 3.1和.NET 5


我的问题是:这个目标选择是否足以实现“最大”兼容性(从CLR 2.0开始),是否可以从列表中删除一些目标,或者是否存在缺少的目标?

我已经通过@Martheen在his中提供的参考进行了挖掘

根据以下来自的声明,我现在使用报价下面的列表

然而,针对较低的.NET标准版本引入了许多 支持依赖项。如果您的项目以.NET标准1.x为目标,我们 建议您也将.NET标准2.0作为目标。这简化了程序 在.NET标准上运行的库用户的依赖关系图 2.0兼容的实现,减少了需要下载的软件包数量

  • .NET Framework 2.0-for.NET Framework>=2.0=4.0<4.5
  • .NET标准1.1-对于.NET框架>=4.5、.NET核心>=1.0、.NET>=5、Mono>=4.6、Xamarin.IOS>=10.0、Xamarin.Mac>=3.0、Xamarin.Android>=7.0、UWP>=10.0、Unity>=2018.1
  • .NET标准2.0-对于.NET框架>=4.6.1、.NET核心>=2.0、.NET>=5、Mono>=5.4、Xamarin.IOS>=10.14、Xamarin.Mac>=3.8、Xamarin.Android>=8.0、UWP>=10.0.16299、Unity>=2018.1
  • .NET标准2.1-.NET核心>=3.0、.NET>=5、Mono>=6.4、Xamarin.IOS>=12.16、Xamarin.Mac>=5.16、Xamarin.Android>=10.0

  • 这既提供了对.NET Framework 2.0和更高版本的兼容性,也减少了对较新目标的支持依赖性(请参见上面的引用)。

    您真的必须支持.NET 2.0和.NET 3.5吗?所有当前支持的Windows都带有默认激活的.NET 4.5或更高版本(并且不能被禁用),因此如果您以.NET标准1.1为目标,您将自动兼容所有当前支持的默认.NET Framework安装、所有.NET Core(包括.NET 5)、所有当前支持的Mono、Xamarin、,Unity和UWP变体。@Martheen:起初,我没有包括.NET Framework 4.0及以下版本(从.NET Framework 4.5开始)。然后,我收到了一些要求同时支持.NET Framework 2.0/3.5/4.0的请求,因为他们的最终产品必须保持与Windows XP的兼容性,而且他们的客户只有.NET Framework 2.0。就个人而言,我的最终产品在.NETCore3.1中(未来在.NET5中)。然而,我也不想错过成为这些最终产品一部分的机会。是的,Windows XP和Windows Server 2003将于2020年投入生产并正在进行:(好吧,仅仅以.NET 2.0(与3.5兼容)、4.0和.NET标准1.1为目标就足以涵盖所有基础。谢谢,你能从你的评论中找到答案吗?