DEV Community


Posted on

.Net Core - Launch Browser when application start

You want to distribute a .Net Core App and don't want user to have to launch a browser manually.

In your publish settings choose :

  • standalone
  • single file application

In your program.cs put the following code :

an adaptation of the following post LaunchBrowser

  using Microsoft.AspNetCore;
  using Microsoft.AspNetCore.Hosting;
  using System.Diagnostics;
  using Microsoft.AspNetCore.Builder;
  using static System.Runtime.InteropServices.RuntimeInformation;
  using static System.Runtime.InteropServices.OSPlatform;
  using Microsoft.Extensions.Hosting;

  class Program
    static void Main(string[] args)
      string url = "http://localhost:54321/";

      using (var server = CreateServer(args, url))
        StartBrowserWhenServerStarts(server, url);
        server.Run(); //blocks

    /// <summary>
    /// Create the kestrel server, but don't start it
    /// </summary>
    private static IWebHost CreateServer(string[] args, string url) => WebHost

    /// <summary>
    /// Register a browser to launch when the server is listening
    /// </summary>
    private static void StartBrowserWhenServerStarts(IWebHost server, string url)
      IHostApplicationLifetime serverLifetime = (IHostApplicationLifetime)server.Services.GetService(typeof(IHostApplicationLifetime));
      serverLifetime.ApplicationStarted.Register(() =>
        var browser =
              ? new ProcessStartInfo("cmd", $"/c start {url}") 
              : IsOSPlatform(OSX) 
                ? new ProcessStartInfo("open", url) 
                : new ProcessStartInfo("xdg-open", url); //linux, unix-like

Enter fullscreen mode Exit fullscreen mode

Discussion (0)