ChatGPT解决这个技术问题 Extra ChatGPT

docs.microsoft.com 上的 .NET 平台扩展是什么?

Microsoft Docs 中有一个名为 ".NET Platform Extensions" 的框架级导航元素。例如,它包含有关最近添加的 API(例如 System.IO.PipelinesSystem.Threading.Channels)的文档,以及一大堆其他 API,包括不那么新的 API。

此集合中的一些 API 可用作 nuget 包(适用于 .Net Core 和 .Net Framework),但其他 API 似乎不可用。此外,到目前为止,还没有名为“.NET Platform Extensions”或类似名称的 nuget 包。

那么,问题是这个 API 集合究竟代表什么?它与以下各项的关系是什么:

.Net 框架

.Net 核心

.Net 标准

.Net Framework / .Net Core 中的支持如何?

最后,一些 API 似乎已经作为单独的 nuget 包提供,而其他 API 尚未提供,那么这方面的故事是什么?

正如 .NET - Introducing the Windows Compatibility Pack for .NET Core 所说,“平台扩展”适用于不属于平台(核心或标准)但可通过 Nuget 获得的 API。您不会期望为此使用一个包罗万象的 Nuget 包。
这是否意味着如果我使用扩展包,例如 DirectorySearcher API,我将有可能在运行 .NET core 2.2 时在 Linux 容器上使用相同的代码。谢谢

M
Maíra Wenzel - MSFT

它表示作为 NuGet 包而不是 .NET Core 共享框架的一部分提供的 API。

我们现在没有能力在 docs.microsoft.com 上识别不同的包以及它们支持的目标框架,但这是我们积压中要解决的问题。因此,将其添加为新目标使我们能够为新 API 添加文档。


目前尚不清楚平台扩展的真正组成部分是什么,例如 Microsoft.Extensions.Logging.Logger 类(Microsoft.Extensions.Logging.Abstractions.dll 的一部分)列在 .NET 平台扩展下,但它是 ASP.NET Core 3.1 共享框架的一部分
它的名字很糟糕,但 .net 平台扩展的 nuget 包称为 Microsoft.Windows.Compatibility。如果他们将文档修复为使用相同的名称,那当然会很好。 nuget.org/packages/Microsoft.Windows.Compatibility
N
Nikunj Banker

如果您只想将 Windows 平台作为移植过程的开始并逐渐使用 .NET core 或 .NET Standard 的平台独立替代方案,则可以使用 Windows Compatibility Pack。

详情请参阅:https://docs.microsoft.com/en-us/dotnet/core/porting/windows-compat-pack

Windows 兼容包是通过 NuGet 包 Microsoft.Windows.Compatibility 提供的,可以从面向 .NET Core 或 .NET Standard 的项目中引用。

请参阅 NuGet 链接了解更多详细信息:https://www.nuget.org/packages/Microsoft.Windows.Compatibility,您可以通过执行以下命令来使用它:

Install-Package Microsoft.Windows.Compatibility -Version 3.1.0