Tuesday, October 6, 2026

Modern way of using the Application Builder in a console app

It's just:

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;

var settings = new HostApplicationBuilderSettings() { Args = args };
var builder = Host.CreateEmptyApplicationBuilder( settings );

builder.Configuration
    .SetBasePath(AppContext.BaseDirectory)
    .AddJsonFile("appsettings.json");

builder.Services.AddTransient<AppRunner>();

builder.Logging.AddConsole();
builder.Logging.SetMinimumLevel(LogLevel.Trace);

var app = builder.Build();

//app.Run();
var runner = app.Services.GetRequiredService<AppRunner>();
runner.Run();

public class AppRunner( ILogger<AppRunner> logger, IConfiguration cfg)
{
    public void Run()
    {
        var foo = cfg["Foo"];
        logger.LogDebug($"Hello world {foo}");
    }
}

with simple appsettings.json:

{
   "Foo":  "Bar"
}