nuget - 微软的 "....Abstractions"Nuget 包的想法是什么?

标签 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 对我来说效果很好,但我必须尝试一下。)
    谢谢

    最佳答案

    这个想法是您提供的库或包将仅引用抽象包以更容易兼容。
    例如。如果您发布公司范围内的 NuGet 包,其中包含一些业务逻辑或自定义客户端,您可能需要使用 ILogger/ILogger<T>用于记录但实际上并不依赖于任何记录实现(内置记录器或 Serilog 等),因此您可以引用这些接口(interface)的记录抽象。

    关于nuget - 微软的 "....Abstractions"Nuget 包的想法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64629589/

    相关文章:

    visual-studio-2013 - 恢复 Typescript 定义 Nuget 包

    c# - Blazor 服务器 : Mixing EF Core DbContextFactory with DbContext

    c# - ASP.NET Core 5.0 MVC 中的自定义字段验证错误

    c# - Travis CI 上使用 Mono 的 NuGet 包恢复失败

    c# - 为什么 EF Core 会生成反转位比较

    dll - C# CLR 异常 "BadImageFormatException: Could not load file or assembly"

    entity-framework-core - 包 Microsoft.EntityFrameworkCore.Sqlite 5.0.0-rc.1.20451.13 与 net50 (.NETFramework,Version=v5.0)/win7-x86 不兼容

    powershell - Nuget 包 - 将文件重命名为基于项目命名空间

    c# - 在遗留 .NET 平台上使用 .NET Core 包

    jenkins - 让 Jenkins 了解自定义 NuGet 包源