diff --git a/Directory.Packages.props b/Directory.Packages.props
index f46c178e87..e55472577b 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -14,9 +14,15 @@
-
+
+ 6.0.0
+ 8.0.0
+
-
+
+ 6.0.0
+ 8.0.0
+
diff --git a/src/System.CommandLine.Hosting/HostApplicationBuilderAction.cs b/src/System.CommandLine.Hosting/HostApplicationBuilderAction.cs
new file mode 100644
index 0000000000..dc2ad73749
--- /dev/null
+++ b/src/System.CommandLine.Hosting/HostApplicationBuilderAction.cs
@@ -0,0 +1,150 @@
+#if NET8_0_OR_GREATER
+using System.Collections.Generic;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+
+namespace System.CommandLine.Hosting;
+
+public class HostApplicationBuilderAction() : HostingAction()
+{
+ private new readonly Func? _createHostBuilder;
+ public new Action? ConfigureHost { get; set; }
+
+ protected override IHostBuilder CreateHostBuiderCore(string[] args)
+ {
+ var hostBuilder = _createHostBuilder?.Invoke(args) ??
+ new HostApplicationBuilder(args);
+ return new HostApplicationBuilderWrapper(hostBuilder);
+ }
+
+ protected override void ConfigureHostBuilder(IHostBuilder hostBuilder)
+ {
+ base.ConfigureHostBuilder(hostBuilder);
+ ConfigureHost?.Invoke(GetHostApplicationBuilder(hostBuilder));
+ }
+
+ private static HostApplicationBuilder GetHostApplicationBuilder(
+ IHostBuilder hostBuilder
+ )
+ {
+ return (HostApplicationBuilder)hostBuilder
+ .Properties[typeof(HostApplicationBuilder)];
+ }
+
+ private class HostApplicationBuilderWrapper(
+ HostApplicationBuilder hostApplicationBuilder
+ ) : IHostBuilder
+ {
+ private Action? _useServiceProviderFactoryAction;
+ private object? _configureServiceProviderBuilderAction;
+
+ public HostBuilderContext Context { get; } = new(
+ ((IHostApplicationBuilder)hostApplicationBuilder).Properties
+ )
+ {
+ Configuration = hostApplicationBuilder.Configuration,
+ HostingEnvironment = hostApplicationBuilder.Environment,
+ Properties =
+ { { typeof(HostApplicationBuilder), hostApplicationBuilder } }
+ };
+
+ public IDictionary