C# dotnetcore:从cli获取环境并根据其值添加Json的更好方法

C# dotnetcore:从cli获取环境并根据其值添加Json的更好方法,c#,.net-core,C#,.net Core,我想从命令行args中读取environment,并使用它的值来构建配置本身。环境可以通过不同的方式传递(-Environment Staging,-e=Staging等),所以我自己不想解析参数。我发现我们可以先构建只读环境的配置,然后构建整个配置: var envName = new ConfigurationBuilder() .AddEnvironmentVariables() .AddCommandLine(args) .Build() .GetValu

我想从命令行args中读取
environment
,并使用它的值来构建配置本身。环境可以通过不同的方式传递(
-Environment Staging
-e=Staging
等),所以我自己不想解析
参数。我发现我们可以先构建只读环境的配置,然后构建整个配置:

var envName = new ConfigurationBuilder()
    .AddEnvironmentVariables()
    .AddCommandLine(args)
    .Build()
    .GetValue<string>("Environment");

var contentRoot = Directory.GetCurrentDirectory();

var configuration = new ConfigurationBuilder()
    .SetBasePath(contentRoot)
    .AddJsonFile($"Configuration/appsettings.json", optional: false, reloadOnChange: true)
    .AddJsonFile($"Configuration/appsettings.{envName}.json", optional: true, reloadOnChange: true)
    .AddEnvironmentVariables()
    .AddCommandLine(args)
    .Build();
var envName=new ConfigurationBuilder()
.AddenEnvironmentVariables()
.AddCommandLine(args)
.Build()
.GetValue(“环境”);
var contentRoot=Directory.GetCurrentDirectory();
var configuration=new ConfigurationBuilder()
.SetBasePath(contentRoot)
.AddJsonFile($“Configuration/appsettings.json”,可选:false,reloadOnChange:true)
.AddJsonFile($“Configuration/appsettings.{envName}.json”),可选:true,重载更改:true)
.AddenEnvironmentVariables()
.AddCommandLine(args)
.Build();

有更好的方法吗?

我认为2.0中有一个bug应该在加载默认JSON之前在2.1中使用命令行参数进行修复,这样您可以在使用默认web主机构建器时通过命令行指定环境。我认为2.0中有一个bug应该在2.1中使用命令行参数进行修复在加载默认JSON之前,您可以在使用默认web主机生成器时通过命令行指定环境