【问题标题】:Which one is the best target to migrate an ASP.NET project, .Net Core or .Net Standard? [closed]迁移 ASP.NET 项目的最佳目标是 .Net Core 还是 .Net Standard? [关闭]
【发布时间】:2019-01-17 03:09:58
【问题描述】:

请不要将此视为重复的问题。我打算将我的 ASP.NET RESTful web-api (.Net Full) 项目迁移到 .Net Standard.Net Core,我遇到了一个严肃的问题,我在其他类似问题中找不到答案。

我正在寻找这个问题是为了实现虽然我可以选择.Net Core,但为什么我应该将我的库程序集定位在.Net Standard

也许原因之一是让这些程序集准备好在.Net Framework 项目中使用它们。无论如何,还有其他理由可以说服我将目标保持在.Net Standard吗?

注意:我不需要保留我的项目的.Net Full 版本,我只想拥有它的cross-platform 版本。


【问题讨论】:

  • 我认为 .Net Core 的内置库较少。您确实需要列出所有约束。您需要拥有跨平台版本的唯一限制是什么?跨平台是指 x86 和 x64 吗?
  • 是的,库应该是 .NET Standard,以便它们可以在 Core 或 Framework 下工作。
  • .NET Standard 仅适用于库。运行时是 .NET Core。您的选择是only Full 或 .NET Core。如果你想要跨平台,那就是 .NET Core。 ASP.NET Core 本身在两个运行时都运行

标签: asp.net .net .net-core .net-standard


【解决方案1】:

别无选择。 .NET Standard 仅适用于 .NET 类库。它不是运行时,因此无法创建针对它的应用程序。运行时是 .NET Core 和 .NET Full 框架。

.NET Core 是唯一的跨平台选项。

ASP.NET Core 本身是一个可以在 both 运行时上运行的 Web 堆栈。您可以在New Project 对话框中选择您想要的。

对于库,选择取决于需要什么。 .NET Standard 库可以针对任何兼容的运行时。 ASP.NET Core 自己的Razor Class Libraries 是.NET Standard 2.0 项目。大多数 NuGet 包都与 .NET Standard 兼容,以避免为每个运行时打包不同版本的麻烦。

另一方面,最新的 Span 相关功能仅出现在 .NET Core 2.1 及更高版本中。他们aren't available in .NET Standard 2.0 但他们出现在 2.1 中。这个来自All About Span: Exploring a New .NET Mainstay 的示例仅适用于 .NET Core 2.1+:

string input = ...;
ReadOnlySpan<char> inputSpan = input;
int commaPos = input.IndexOf(',');
int first = int.Parse(inputSpan.Slice(0, commaPos));
int second = int.Parse(inputSpan.Slice(commaPos + 1));

【讨论】:

  • 谢谢 Panagiotis,这真的很有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-31
  • 1970-01-01
  • 2019-01-18
  • 1970-01-01
相关资源
最近更新 更多