I have a series of .NET Core worker services (targeting .NET 6). I am accessing configuration data from appsettings.json through hostcontext and that works fine:
public static async Task Main(string[] args)
{
// Start the application
await CreateHostBuilder(args).Build().RunAsync();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseWindowsService()
.ConfigureServices((hostContext, services) =>
{
// I can access config data like this:
var connectionString = hostcontext.Configuration["ConnectionStrings:MyConnectionString"];
});
However, I now need to get configuration data from within Main() before CreateHostBuilder() is called.
I can do something like this, but is there a better way? It feels wrong to build a ConfigurationBuilder just to grab this one value, is there a more efficient way to do this?
public static async Task Main(string[] args)
{
// Get the configuration
var environmentName = Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT") ?? "Production";
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{environmentName}.json", true, true);
var configuration = builder.Build();
// Start the application
await CreateHostBuilder(args).Build().RunAsync();
}