【问题标题】:What’s the difference between NETStandard.Library package and Microsoft.NETCore.App packages?NETStandard.Library 包和 Microsoft.NETCore.App 包有什么区别?
【发布时间】:2021-03-23 10:36:13
【问题描述】:

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

NETStandard 目标框架是一个抽象的目标框架,代表了许多框架和平台的 API 表面。因此,NETStandard 程序集可以在任何支持该程序集所针对的 NETStandard 的平台上运行,例如:.NET 桌面、Windows Phone、通用 Windows 平台应用程序、.NET Core 应用程序等。NETCoreApplication 是一个具体的目标框架,它代表单个具有 API 表面和实现的平台。 .NET Core 应用程序可以自行运行。 .NETStandard 库必须由特定的具体目标框架发布或使用,才能在该类型的应用程序中使用。

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

NetCoreApp 是一个平台,而 .NetStandard.Library 是一个应该是跨平台的库(可移植类库),适用于各种 .NET 平台运行时。

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

【问题讨论】:

    标签: c# .net-core package .net-standard


    【解决方案1】:

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

    .NET Core 是托管框架的免费、跨平台、开源实现。它支持四种类型的应用程序:控制台、ASP.NET Core、云和通用 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/

    【讨论】:

      【解决方案2】:

      过于简单,但可以将 .NET Standard 视为在任何可运行 .NET 的平台上运行的库。这意味着它可以在 Linux、Mac、Windows 等平台上运行。.NET Core 是“框架”的简约版本,因此您可以让您的应用程序尽可能小,并且只添加您需要的内容。核心仅表示应用运行所绝对需要的核心功能。

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

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

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

      当涉及到您添加到标准或核心(Nuget 任何人?)的包时,其中有一个区别是处理具有无法在标准中运行的功能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-16
        • 1970-01-01
        • 2017-12-05
        • 2011-07-05
        • 2011-04-10
        • 2013-10-27
        • 2018-11-14
        • 2012-02-16
        相关资源
        最近更新 更多