.Netcore 源码

 CreateHostBuilder(args).Build().Run();

1. 

Host.CreateDefaultBuilder().ConfigureWebHostDefalut(wb=>{wb.UseStartup<Startup>()});

1. Host.CreateDefaultBuilder()   这一步,创建 Builder,并在 这个里面 进行一系列配置:
配置只是委托,还没有真正执行,这个配置加载 了 appconfig.json 等。
这一步还是最通用的Host

public static IHostBuilder CreateDefaultBuilder(string[] args)
        {
            HostBuilder builder = new();
            return builder.ConfigureDefaults(args);
        }


2.ConfigureWebHostBUilder,这一步是对HostBUilder 的进一步配置,把这个BUilder配成有生成WebHost 的能力。
这里面会有BUilder.ConfigureService(()=>{service.AddHostedService<GenericWebHostService>()});
3.BUild(), 这一步 会把上面的配置执行,生成一个IHost   

public interface IHost : IDisposable
    {
        IServiceProvider Services { get; }
        Task StartAsync(CancellationToken cancellationToken = default);
        Task StopAsync(CancellationToken cancellationToken = default);
    }

4. 这个Build() 的时候,会创建 根容器

   private void CreateServiceProvider()
        {
            var services = new ServiceCollection();

气功波(18037675651)
原文地址:https://www.cnblogs.com/qgbo/p/15674527.html