When running a console app outside of a local environment, .net core 3.1 is looking for the appsettings.json file in a different directory than where the program executes.
- The configuration file 'appsettings.json' was not found and is not optional. The physical path is 'C:\windows\system32\appsettings.json'.
In previous versions of dotnet using the Environment.CurrentDirectory or Directory.GetCurrentDirectory() but not working in 3.1. How do you change this so that it looks in the directory where it is running? The below does not work
using var host = Host.CreateDefaultBuilder()
.ConfigureHostConfiguration(builder =>
{
builder.SetBasePath(Environment.CurrentDirectory);
builder.AddCommandLine(args);
})
.UseConsoleLifetime(options => options.SuppressStatusMessages = true)
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureAppConfiguration((hostContext, builder) =>
{
builder.AddJsonFile("appsettings.json");
hostContext.HostingEnvironment.EnvironmentName = Environment.GetEnvironmentVariable("NETCORE_ENVIRONMENT");
if (hostContext.HostingEnvironment.EnvironmentName == Environments.Development)
{
builder.AddJsonFile($"appsettings.{hostContext.HostingEnvironment.EnvironmentName}.json", optional: true);
builder.AddUserSecrets<Program>();
}
})