微软的“....Abstractions”Nuget 包的想法是什么?

Kar*_*loX 5 nuget .net-5

有人可以解释提供...抽象包背后的一般想法吗?

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

  • Microsoft.Extensions.Hosting
  • Microsoft.Extensions.Hosting.Abstractions
  • Microsoft.AspNetCore.Hosting.Server.Abstraction
  • Microsoft.AspNetCore.Hosting.Abstractions
  • Microsoft.AspNetCore.Hosting
  • Microsoft.Extensions.Hosting.WindowsServices

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

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

谢谢

Mar*_*ich 10

这个想法是,您提供的库或包将仅引用抽象包以实现更轻松的兼容性。

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