【问题标题】:Visual studio new project wizard: .NET Core vs .NET Standard library?Visual Studio 新项目向导:.NET Core 与 .NET Standard 库?
【发布时间】:2017-08-05 06:43:04
【问题描述】:

在 Visual Studio 2017 的新项目向导中,我看到了创建新 .NET Standard 库和新 .NET Core 库的选项。我了解 .NET Standard 是一个规范,而 .NET Core 是该规范的跨平台实现

但是有人可以解释从以下每种方式创建库时的真正区别吗?更糟糕的是,如果您仔细观察,两个对话框的顶部还有一个下拉菜单,上面写着“.NET Framework 4.6.2”:( - 这是怎么回事?

.NET 标准库

.NET Core 库

旁注:命名约定令人困惑。 “.NET 5”听起来更简单

【问题讨论】:

  • 命名约定是因为从 4 开始他们开始使用Semantic Versioning,他们不会更改为 .NET 5,直到他们对框架进行更改导致它不向后兼容用 4.x 开发的东西。这就是编号系统的意义所在,如果您运行的 4.x 版本大于或等于您编写代码的版本,因为您知道您的代码无需任何更改即可编译。如果你尝试在 5.x 上编译你的代码,你知道你需要检查兼容性。
  • 但他们在称它为.net core 2.0 时放弃了这个想法:( blogs.msdn.microsoft.com/dotnet/2016/09/26/…
  • 我们谈论的是 .NET 框架而不是 .net 核心版本控制。
  • 还记得 PCL 库项目模板吗?以前创建跨平台库的解决方案。那已经为 .NETCore 退休了,从 n 中受苦太多了!问题,由 .NETStandard 取代。兼容性网格is here。请记住,这是正在进行的工作,2.0 需要一段时间才能显示出来。

标签: .net visual-studio .net-core .net-4.6 .net-standard


【解决方案1】:

当您要创建 .NET Core 或 .NET Standard 项目时,上方的下拉菜单(“.NET Framework 4.6.2”)不执行任何操作。

(可能相关对话:https://twitter.com/bradwilson/status/836434975985577984

【讨论】:

【解决方案2】:

使用这个图表

如果您创建 .NET Core 库,则您的库只能被蓝色部分中的东西使用,并且只能使用蓝色部分或红色部分中的东西。如果您创建一个 .NET Standard 库,您的库可以被绿色、蓝色、橙色和红色部分中的东西使用,但只能使用红色部分中的东西。

您可能希望使用核心库而不是标准库的原因是,如果您知道您只针对核心,您可能会访问更多函数和库以从您的代码中调用。您无需将您使用的公共 API 的表面积限制在所有 4 个部分都允许的范围内。

【讨论】:

  • 那么标准库(红色)不一定是跨平台的?
  • 如果您在 .csproj 中为 <FrameworkTarget> 构建一个针对 netstandard1.0 的 DLL,则该 DLL 可以在任何支持 1.0 或更高版本的平台上使用。如果您构建一个针对 netcoreapp1.0 的 DLL,您将只能在同样针对 netcoreapp1.0 的项目中使用它
猜你喜欢
  • 2016-11-15
  • 2018-02-02
  • 1970-01-01
  • 1970-01-01
  • 2021-06-06
  • 1970-01-01
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多