Почему создается функция CreateWebHostBuilder ()? - PullRequest
1 голос
/ 17 октября 2019

При создании веб-API ASP.NET Core 2.2, 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();
        }
    }
}

1 Ответ

4 голосов
/ 17 октября 2019

Метод CreateWebHostBuilder используется инструментами Entity Framework Core, как описано здесь :

Код, который вызывает CreateDefaultBuilder, находится в методе с именем CreateWebHostBuilder, который отделяет его от кода в Main, который вызывает Run для объекта компоновщика. Это разделение требуется, если вы используете Entity Framework Core tools . Инструменты ожидают найти метод CreateWebHostBuilder, который они могут вызвать во время разработки, чтобы настроить хост без запуска приложения. Альтернативой является реализация IDesignTimeDbContextFactory. Для получения дополнительной информации см. Создание во время разработки DbContext .

Если вы не используете EF Core, вы можете свернуть его в метод Main, так как выпредлагается.

...