Autofac 会在 netcore 3+ 中支持 IWebHostBuilder API 吗?

Will Autofac support IWebHostBuilder API in netcore 3+?

https://autofaccn.readthedocs.io/en/latest/integration/aspnetcore.html#asp-net-core-3-0-and-generic-hosting

Autofac 似乎只支持通用托管 API、IHostBuilder。我想知道旧的 asp netcore 2.x 文档是否仍然与 asp netcore 3 应用程序相关。

另外,我发现https://github.com/autofac/Autofac.AspNetCore好久没更新了,估计Autofac以后也无意支持IWebHostBuilder...

关于如何使用 IWebHostBuilder API 在 AspNetCore 3.x 中设置 Autofac,我们有任何指南吗?

我读到了 [this][ post,它没有回答我的问题。

您可以在启动时创建具有 IWebHostEnvironment 的构造函数参数 class 和 asp.net 核心将自动注入 IWebHostEnvironment.

ConfigureContainer.

上将 IWebHostBuilder 注册为实例

参见下面的代码。

public class Startup
{     
    private readonly IWebHostEnvironment _environment;

    // Auto injection IWebHostEnvironment
    public Startup(IWebHostEnvironment environment)
    {        
        _environment = environment;
    }
     
    public void ConfigureServices(IServiceCollection services)
    {
        // ...
    }

    // Autofac ID
    public void ConfigureContainer(ContainerBuilder builder)
    {
        // Register your own things directly with Autofac, like:
        builder.Register<SampleClass>();
        
        // Register your IWebHostEnvironment
        builder.RegisterInstance(_environment);
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // ...
    }
}

public class SampleClass
{
    private readonly IWebHostEnvironment _environment;

    // If you register IWebHostEnvironment on the Startup, IWebHostEnvironment will auto inject.
    public SampleClass(IWebHostEnvironment environment)
    {
        _environment = environment;
    }
}

当您解析 SampleClass 时,您可以看到 IWebHostEnvironment 被自动注入到构造函数中。

在 ASP.NET Core 3.x 中,他们改变了依赖注入的集成方式,不,版本 2.x 文档不再适用 - 无论是在 Autofac 案例中还是在 ASP.NET 案例。 ASP.NET Core 有意转移到通用托管模型,其中 Web 托管是其之上的一层。

并不是说 Autofac“无意支持 IWebHostBuilder”,而是 在 ASP.NET Core 3 中这不是一个选项。它在框架级别;这不再是您与 ASP.NET Core 集成的方式。您不再将 DI 工厂附加到 Web 主机,而是将其附加到外部通用主机。

在你的Startupclass中注册东西就像在ASP.NET核心2中一样。

The docs you linked to explain all of that and show examples. You can also see in the Microsoft ASP.NET Core 2 to 3 migration docs HostBuilder 替换 WebHostBuilderWebHostBuilder,虽然它可能仍然存在,但已被弃用,您不应该使用它。