从 .NET Core 3.1 迁移到 .NET 5 会产生编译时错误

Migrating from .NET Core 3.1 to .NET 5 produce compile-time error

我有 .netcore 3.1 应用程序,我想将其更新为 .net 5.0

我有以下代码

public static IAppSettings ConfigureAppSettings(this IServiceCollection services, IConfiguration configuration)
{
    void ConfigureSection<Interface, Implementation>(string sectionName)
        where Implementation : Interface, new() where Interface : class
    {
        Implementation configSection = new Implementation();
        configuration.GetSection(sectionName).Bind(configSection);
        services.AddSingleton<Interface>(configSection);
    }
}

它以前工作正常,但在更新到 .net5 后我开始看到这个编译时错误

CS1061 'IConfigurationSection' does not contain a definition for 'Bind' and no accessible extension method 'Bind' accepting a first argument of type 'IConfigurationSection' could be found (are you missing a using directive or an assembly reference?)

  1. 显然,Bind 方法已被删除,API 不再兼容
  2. offical documentation for the migration
  3. 中没有提到这个问题的解决方法

我的问题:Bind 方法的替代方法是什么?

我安装了这个 Microsoft.Extensions.Configuration.Binder 包,问题解决了。

奇怪的是,当我使用 .net-core3.1 时,我不需要从 Nuget 安装它,但是在更新到 .net5 之后,我需要单独安装这个包。