gpt4 book ai didi

.net - .NET Core 和 .NET 标准类库项目类型之间有什么区别?

转载 作者:行者123 更新时间:2023-12-03 03:52:34 35 4
gpt4 key购买 nike

在 Visual Studio 中,您至少可以创建三种不同类型的类库:

  • 类库(.NET Framework)
  • 类库(.NET 标准)
  • 类库(.NET Core)

虽然第一个是我们多年来一直使用的,但我一直感到困惑的一个主要问题是何时使用 .NET Standard 和 .NET Core 类库类型。我最近在尝试 multi-target different framework versions 时被这个咬了一口。 ,和 creating a unit test project .

那么,类库(.NET Standard)类库(.NET Core)有什么区别,为什么两者都存在,以及我们什么时候应该使用一个比另一个?

最佳答案

When should we use one over the other?

该决定是兼容性和 API 访问之间的权衡。

当您想要增加与您的库兼容的应用程序数量,并且您可以接受减少您的库可以访问的 .NET API 表面积时,请使用 .NET 标准库。

当您想要增加您的库可以访问的 .NET API 表面积,并且您可以只允许 .NET Core 应用程序与您的库兼容时,请使用 .NET Core 库。

例如,面向 .NET Standard 1.3 will be compatible with 的库面向 .NET Framework 4.6、.NET Core 1.0、通用 Windows 平台 10.0 以及支持 .NET Standard 1.3 的任何其他平台的应用程序。不过,该库将无法访问 .NET API 的某些部分。例如,Microsoft.NETCore.CoreCLR包与 .NET Core 兼容,但不与 .NET Standard 兼容。

What is the difference between Class Library (.NET Standard) and Class Library (.NET Core)?

兼容性:面向 .NET Standard 的库将在任何符合 .NET Standard 的运行时上运行,例如 .NET Core、.NET Framework、Mono/Xamarin 。另一方面,面向 .NET Core 的库只能在 .NET Core 运行时上运行。

API Surface Area:.NET Standard 库包含 NETStandard.Library 中的所有内容,而 .NET Core 库包含 Microsoft.NETCore.App 中的所有内容。后者包括大约 20 个附加库,其中一些我们可以手动添加到我们的 .NET 标准库中(例如 System.Threading.Thread ),而其中一些与 .NET 标准不兼容(例如 Microsoft.NETCore.CoreCLR)。

此外,.NET Core 库指定运行时并附带应用程序模型。例如,这对于使单元测试类库可运行非常重要。

Why do both exist?

暂时忽略库,.NET Standard 存在的原因是为了可移植性;它定义了.NET 平台同意实现的一组 API。任何实现 .NET 标准的平台都与面向该 .NET 标准的库兼容。 .NET Core 就是这些兼容平台之一。

回到库,.NET Standard 库模板可以在多个运行时上运行(以牺牲 API 表面积为代价)。相反,.NET Core 库模板的存在是为了访问更多 API 表面积(以牺牲兼容性为代价)并指定用于构建可执行文件的平台。

Here is an interactive matrix显示哪个 .NET 标准支持哪些 .NET 实现以及有多少 API 可用区域。

关于.net - .NET Core 和 .NET 标准类库项目类型之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42939454/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com