【问题标题】:Which .Net framework should my .Net Core library target?我的 .Net Core 库应该针对哪个 .Net 框架?
【发布时间】:2016-11-26 23:00:01
【问题描述】:

我很喜欢 Visual Studio 2015 中 .xproj 的“多目标”功能,这使得使用同一个 C# 项目定位多个 .Net 框架变得非常容易。我目前的目标是 .Net 4.5.2、4.6、4.6.1、4.6.2、.Net Standard 1.3 和 .Net Standard 1.6,并且我将所有 DLL 打包在一个 nuget 包中。

你认为这是矫枉过正吗?我应该针对更少的框架吗?更多?

顺便说一句,我知道 xproj 最终会被 .csproj 取代,但我目前正在使用它。

【问题讨论】:

  • 只使用 4.6.2 并跳过 4.6.1 和 4.6。
  • @JeroenHeier 是对的。微软很快就会停止对 4.6.2 之前的 .net 框架的支持
  • 以上这些人有没有阅读过微软文档? support.microsoft.com/en-us/gp/framework_faq/en-us微软还是很好支持4.5.2/4.6/4.6.1。

标签: c# .net nuget


【解决方案1】:

如果您还没有任何条件编译,那么您应该只保留 .NET Framework 4.5.2 和 .NET Standard 1.3。

原因很简单。如果该包适用于 .NET Framework 4.5.2,则它适用于所有具有更大版本的 .NET Framework。无需单独定位它们。

这同样适用于 .NET Standard。如果包以 .NET Standard 1.3 为目标,那么它可以在 .NET Standard 1.4/1.5/1.6/2.0 上正常工作。

您必须同时针对两者,因为 .NET Framework 4.5.2 未实现 .NET Standard 1.3。可能您不想针对 .NET Standard 1.2,因为它太有限了。

【讨论】:

  • 如果有人使用我的库并针对这些框架之一,不提供使用 4.6、4.61 和 4.6.2 构建的版本有什么缺点吗?
  • @desautelsj 见第 2 段。完全没有缺点。
  • 不太对,我猜。如果您使用像 #if NETSTANDARD1_2 这样的预处理器指令(不确定现在是否正确),它将不适用于 NETSTANDARD1_3 - 或者是否有特定的东西,如 if NETSTANDARD 或适用于所有 net core 的东西 -框架?
  • @MatthiasBurger 如果您的代码已经适用于 .NET Standard 1.2,那么它会自动在 1.3 及更高版本上运行,为什么之后还需要 NETSTANDARD1_3?仅当您想分别针对 .NET Framework 和 .NET Core 时才应使用条件。
  • 说,我想同时针对 .net 4.5.1 和 .net standard 1.2。所以有不同的方法,例如对于Type 类型的实例。我需要指定诸如 #if NETSTANDARD1_2 bool isClass = myType.GetTypeInfo().IsClass; #elif NET451 bool isClass = myType.IsClass; 之类的东西。这适用于 1.2,但不适用于 1.3。会吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-10
  • 1970-01-01
  • 2018-05-25
  • 2010-09-07
  • 1970-01-01
  • 2012-11-21
  • 1970-01-01
相关资源
最近更新 更多