哪些 .NET 目标用于在保持小包的同时最大程度地兼容 .NET10=] 库?
Which .NET targets to use for a maximum compability of a .NET class library while maintaining a small package?
.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“系统”的 class 库创建者,我想提供广泛的兼容性:我的库应该能够在各种衍生版本、API 版本中使用,并且版本,在编译时不会导致 errors/warnings(例如“一个或多个包不兼容...”)。
我的源代码旨在为 .NET Framework 2.0、3.5、4.0、4.5、4.8、.NET Standard 2.0、.NET Core 2.1、.NET Core 3.1、.NET 5“编译”。
现在我想提供一个 (NuGet) 包,其中包含最低限度的 .NET 目标,但保持与所有“主要”.NET“风格”的兼容性。
我的计划是为 CLR 更改后的第一个版本(.NET Framework 2.0、4)、.NET Standard 2.0、.NET Core 2.1、.NET Core 3.1 和 .NET 5 提供 .NET 目标.
我的问题:这个目标选择是否足以实现“最大”兼容性(从 CLR 2.0 开始),是否可以从列表中删除一些目标,或者是否缺少目标?
我已经深入了解@Martheen 在他的 answer 中提供的参考资料。
根据 .NET Standard documentation about which .NET Standard version to be target 的以下声明,我现在使用引用下方的列表。
However, targeting lower .NET Standard versions introduces a number of
support dependencies. If your project targets .NET Standard 1.x, we
recommend that you also target .NET Standard 2.0. This simplifies the
dependency graph for users of your library that run on .NET Standard
2.0 compatible implementations, and it reduces the number of packages they need to download.
- .NET Framework 2.0 - 对于 .NET Framework >= 2.0 <= 3.5
- .NET Framework 4.0 - 适用于 .NET Framework >= 4.0 < 4.5
- .NET Standard 1.1 - 适用于 .NET Framework >= 4.5、.NET Core >= 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 Standard 2.0 - 适用于 .NET Framework >= 4.6.1、.NET Core >= 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 Core >= 3.0,.NET >= 5,Mono >= 6.4,Xamarin.IOS >= 12.16, Xamarin.Mac >= 5.16, Xamarin.Android >= 10.0
这既提供了与 .NET Framework 2.0 及更高版本的兼容性,又减少了对较新目标的支持依赖性(请参阅上面的引用)。
.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“系统”的 class 库创建者,我想提供广泛的兼容性:我的库应该能够在各种衍生版本、API 版本中使用,并且版本,在编译时不会导致 errors/warnings(例如“一个或多个包不兼容...”)。
我的源代码旨在为 .NET Framework 2.0、3.5、4.0、4.5、4.8、.NET Standard 2.0、.NET Core 2.1、.NET Core 3.1、.NET 5“编译”。
现在我想提供一个 (NuGet) 包,其中包含最低限度的 .NET 目标,但保持与所有“主要”.NET“风格”的兼容性。
我的计划是为 CLR 更改后的第一个版本(.NET Framework 2.0、4)、.NET Standard 2.0、.NET Core 2.1、.NET Core 3.1 和 .NET 5 提供 .NET 目标.
我的问题:这个目标选择是否足以实现“最大”兼容性(从 CLR 2.0 开始),是否可以从列表中删除一些目标,或者是否缺少目标?
我已经深入了解@Martheen 在他的 answer 中提供的参考资料。
根据 .NET Standard documentation about which .NET Standard version to be target 的以下声明,我现在使用引用下方的列表。
However, targeting lower .NET Standard versions introduces a number of support dependencies. If your project targets .NET Standard 1.x, we recommend that you also target .NET Standard 2.0. This simplifies the dependency graph for users of your library that run on .NET Standard 2.0 compatible implementations, and it reduces the number of packages they need to download.
- .NET Framework 2.0 - 对于 .NET Framework >= 2.0 <= 3.5
- .NET Framework 4.0 - 适用于 .NET Framework >= 4.0 < 4.5
- .NET Standard 1.1 - 适用于 .NET Framework >= 4.5、.NET Core >= 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 Standard 2.0 - 适用于 .NET Framework >= 4.6.1、.NET Core >= 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 Core >= 3.0,.NET >= 5,Mono >= 6.4,Xamarin.IOS >= 12.16, Xamarin.Mac >= 5.16, Xamarin.Android >= 10.0
这既提供了与 .NET Framework 2.0 及更高版本的兼容性,又减少了对较新目标的支持依赖性(请参阅上面的引用)。