Microsoft.Extensions.DependencyInjection 在 class 图书馆

Microsoft.Extensions.DependencyInjection in a class library

我正在为 .NET 6 创建一个 C# class 库,它为 Web 配置和 HTTP 做了一堆设置。在 IServiceCollection 上,我正在尝试调用采用一个部分的 Configure 方法,如下所示:

IServiceCollection services = ...
IConfigurationSection section = ...


services.Configure<MySettings>(section);

如果我在 Web 项目中正确地做到这一点,效果会很好。在 class 库项目中,不存在采用 IConfigurationSection 的扩展方法。

在 web 项目中,它似乎来自 Microsoft.Extensions.DependencyInjection,但它必须在其他地方。对于库项目,我包含了以下 NuGet 包。

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" />
    <PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Http.Features" Version="5.0.13" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="6.0.0" />
    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" />
    <PackageReference Include="Microsoft.Extensions.Http" Version="6.0.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.0" />
    <PackageReference Include="Microsoft.Extensions.Options" Version="6.0.0" />
    <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="6.15.0" />
  </ItemGroup>

您缺少 Microsoft.Extensions.Options.ConfigurationExtensions 包。

另请注意,OptionsConfigurationServiceCollectionExtensions.Configure 重载接受 IConfiguration 接口,这是 IConfigurationSection 的基础。