Host.CreateDefaultBuilder vs Host.CreateApplicationBuilder in .NET Platform Extension 7

It is documented a bit here and here.

The general idea was to move away from calbacks and move to linear code for configuring everything

Code samples from the link…

Web

var builder = WebApplication.CreateBuilder();

builder.Logging.AddConsole();

builder.Services.AddOptions<MyOptions>().BindConfiguration("MyConfig");

builder.Services.AddHostedService<MyWorker>();

var app = builder.Build();

app.MapGet("/", () => "Hello World");

app.Run();

Non-Web

var builder = Host.CreateApplicationBuilder();

builder.Logging.AddConsole();

builder.Services.AddOptions<MyOptions>().BindConfiguration("MyConfig");

builder.Services.AddHostedService<MyWorker>();

var host = builder.Build();

host.Run();

Update 2023-11-23

In summary, the old Host.CreateDefaultBuilder method is being phased out and the new methods adopt an approach of “move away from calbacks and move to linear code”.

This means the properties on HostApplicationBuilder should be used, but third party libraries will need to update so their extensions methods cater for it. For example Serilog had a discussion on this.

Example code using Host.CreateApplicationBuilder:

var applicationBuilder = Host.CreateApplicationBuilder();

applicationBuilder.Logging.AddConsole();

applicationBuilder.Configuration.AddJsonFile("appsettings.json");

applicationBuilder.Environment.ApplicationName = "My Application";

applicationBuilder.Services.AddSingleton<MyService>();

Leave a Comment