在创建 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();
}
}
}
请您参考如下方法:
Entity Framework Core 工具使用 CreateWebHostBuilder 方法,如 here 所述:
The code that calls
CreateDefaultBuilderis in a method namedCreateWebHostBuilder, which separates it from the code inMainthat callsRunon the builder object. This separation is required if you use Entity Framework Core tools. The tools expect to find aCreateWebHostBuildermethod that they can call at design time to configure the host without running the app. An alternative is to implementIDesignTimeDbContextFactory. For more information, see Design-time DbContext Creation.
如果您不使用 EF Core,您可以按照您的建议将其折叠到 Main 方法中。
