Microsoft 的“....抽象”Nuget 包的想法是什么?

What's the idea of Microsoft's "....Abstractions" Nuget packages?

有人可以解释提供...抽象包背后的总体思路吗?

例如,当我在 VS NuGet 包管理器中搜索“托管”一词时,结果列表中有:

这些都有关系吗?有些似乎依赖于平台(AspNetCore),而另一些则不是?是否有一般规则告诉我何时选择哪个?

假设我想在 .NET5 class 库中实现 BackgroundService,我应该安装哪些 NuGet? (似乎 Microsoft.Extensions.Hosting.Abstractions 对我来说效果很好,但我不得不尝试一下。)

谢谢

我们的想法是您提供的库或包将只引用抽象包以便于兼容。

例如如果您发送一个 company-wide NuGet 包,其中包含一些业务逻辑或自定义客户端,您可能希望使用 ILogger / ILogger<T> 进行日志记录,但实际上不依赖于任何日志记录实现( built-in 记录器或 Serilog 等),因此您可以引用这些接口的日志记录抽象。