NETStandard.Library 套餐和 Microsoft.NETCore.App 套餐有什么区别?

What’s the difference between NETStandard.Library package and Microsoft.NETCore.App packages?

我想知道这两个包之间的区别,以及它是否与 .NETCore 和 NETStandard 以及兼容性有关。我发现了这个:

The NETStandard target framework is an abstract target framework that represents API surface of many frameworks and platforms. As such NETStandard assemblies can run on any platform that supports the NETStandard targeted by that assembly, for example: .NET Desktop, Windows Phone, Universal Windows Platform applications, .NET Core applications, etc. NETCoreApplication is a concrete target framework that represents a single platform with both API surface and implementation. .NET Core applications are runnable on their own. .NETStandard libraries must be published-for or consumed-by a specific concrete target framework to be used in that type of application.

https://masteringalm.github.io/framework/2018/07/24/NetStandardvsNetCoreApp-Project-Types.html 但我不太确定如何使用它来描述两个包之间的差异。我在这个 link 上看到一个 post:What's difference between .NetCoreApp and .NetStandard.Library? 它说的地方:

NetCoreApp is a platform and .NetStandard.Library is a library supposed to be cross platform (portable class library) for various .NET platforms runtimes.

我认为这与问题 header 中提到的两个特定包之间的差异有关,但是谁能用一种不那么复杂的方式描述包之间的差异?

过于简单化,但可以将 .NET Standard 视为一个库,运行 可以在任何可以 运行 .NET 的平台上运行。这意味着它可以 运行 on Linux、Mac、Windows 等。.NET Core 是“框架”的简约版本,因此您可以保留您的应用程序尽可能小,只添加你需要的。核心仅指应用 运行.

绝对需要的核心功能

为什么标准和核心不同?这主要是因为 .NET 在其他平台上的功能开始与 Microsoft 以外的其他人一起开源。因此,这些功能落后于 .NET。 .NET“框架”在其他平台上的名称是 Mono。在某些方面 .NET Core 可能会取代标准,但某些东西必须达到相同的水平。

我想有些纯粹主义者会不同意我的过度简化,但这是让您了解图书馆的简单方法。

至于两者之间具体有何不同(或“标准中缺少什么等同于核心”)- 我不确定。我相信它可以被查到。在许多情况下,我发现 Core 工作正常,例如对应用程序进行 docker 化(是的,我使用了“dockerizing”这个词,但意思是 运行ning 在 Docker 容器中)。问题是当您 运行 一些无法在“Mono”中处理的包时。

当涉及到您添加到标准或核心(Nuget 任何人?)中的包时,存在差异的地方在于具有标准中无法 运行 的功能。

.net 标准 托管框架的每个实现都有自己的一组基础 Class 库。基本 Class 库 (BCL) 包含 类,例如异常处理、字符串、XML、I/O、网络和集合。 .NET Standard 是用于实现 BCL 的规范。由于 .NET 实现需要遵循此标准,因此应用程序开发人员不必担心每个托管框架实现的 BCL 版本不同。 框架 Class WPF、WCF 和 ASP.NET 等库 (FCL) 不属于 BCL,因此不包含在 .NET Standard 中。 .NET Standard 与 .NET 实现之间的关系与 HTML 规范与浏览器之间的关系相同。第二个是第一个的实现。 因此,.NET Framework、Xamarin 和 .NET Core 都在其托管框架中为 BCL 实现了 .NET 标准。由于计算机行业将继续引入新的硬件和操作系统,因此将有新的 .NET 托管框架。该标准让应用程序开发人员知道将有一组他们可以依赖的一致的 API。 每个 .NET 版本都有一个关联的 .NET Standard 版本。

.NET Core 是托管框架的免费、跨平台、开源实现。它支持四种类型的应用程序:控制台、ASP.NET 核心、云和通用 Windows 平台 (UWP)。 Windows 表单和 Windows Presentation Foundation (WPF) 不是 .NET Core 的一部分。 从技术上讲,.NET Core 只支持控制台应用程序。 ASP.NET Core 和 UWP 是构建在 .NET Core 之上的应用程序模型。 与 .NET Framework 不同,.NET Core 不被视为 Windows 组件。因此,更新以 NuGet 包的形式出现,而不是通过 Windows 更新。由于 .NET Core 运行时安装在 App-Local,并且应用程序通过包管理器更新,应用程序可以与特定的 .NET Core 版本相关联并单独更新。 如需更多信息,请访问 https://www.infoq.com/news/2017/10/dotnet-core-standard-difference/