当在本地环境之外运行控制台应用程序时,.net core 3.1会在不同的目录中查找appsettings.json文件。
- 配置文件'appsettings.json'未找到且不可选。物理路径为'C:\windows\system32\appsettings.json'。
在以前的版本的dotnet中,使用Environment.CurrentDirectory或Directory.GetCurrentDirectory()可以解决这个问题,但在3.1中无效。如何更改才能让它在运行的目录中查找?下面的方法不起作用。
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>();
}
})