为什么创建函数 CreateWebHostBuilder()?

Why is function CreateWebHostBuilder() created?

创建 ASP.NET Core 2.2 Web API 时,Visual Studio 2019 创建此代码:

namespace myapi
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>();
    }
}

为什么要创建函数 CreateWebHostBuilder? 为什么它不只是创建如下代码?

namespace myapi
{
    public class Program
    {
        public static void Main(string[] args)
        {
            WebHost.CreateDefaultBuilder(args).UseStartup<Startup>().Build().Run();
        }
    }
}

CreateWebHostBuilder 方法由 Entity Framework 核心工具使用,如 here 所述:

The code that calls CreateDefaultBuilder is in a method named CreateWebHostBuilder, which separates it from the code in Main that calls Run on the builder object. This separation is required if you use Entity Framework Core tools. The tools expect to find a CreateWebHostBuilder method that they can call at design time to configure the host without running the app. An alternative is to implement IDesignTimeDbContextFactory. For more information, see Design-time DbContext Creation.

如果您不使用 EF Core,您可以按照您的建议将其折叠到 Main 方法中。