Asp.net core 2.1 Asp Net Core 2.1-我们可以在启动程序中使用ConfigurationBuilder吗?

Asp.net core 2.1 Asp Net Core 2.1-我们可以在启动程序中使用ConfigurationBuilder吗?,asp.net-core-2.1,Asp.net Core 2.1,假设我设置了两个名为uat和prod的ASPNET\u环境。 我想使用appsettings.uat.json和appsettings.prod.json 在以前的asp net core版本中,启动ctor有一个ConfigurationBuilder,我可以这样更改以执行我想要的操作: public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBaseP

假设我设置了两个名为
uat
prod
ASPNET\u环境。
我想使用
appsettings.uat.json
appsettings.prod.json

在以前的asp net core版本中,
启动
ctor有一个
ConfigurationBuilder
,我可以这样更改以执行我想要的操作:

public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddJsonFile(
            $"appsettings.{env.EnvironmentName}.json",
            optional: false, reloadOnChange: true)
        .AddEnvironmentVariables();
    if (env.IsDevelopment()) builder.AddUserSecrets<Startup>();
    Configuration = builder.Build();
}
如果我使用上一个ctor,我会不会使用这个新ctor自动完成的“事情”

更新

我的
启动
ctor在2.1中似乎运行良好,我不“觉得”我失去了任何“魔力”

以下是注释中要求的
程序
类:

public class Program
    {
        public static void Main(string[] args) => CreateWebHostBuilder(args).Build().Run();

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>();
    }
公共类程序
{
公共静态void Main(字符串[]args)=>CreateWebHostBuilder(args.Build().Run();
公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.UseStartup();
}

question update如果你所做的一切看起来很好,那么就坚持下去。您的方法唯一的真正区别在于,您只是忽略了由
WebHost.CreateDefaultBuilder
设置的默认配置—再往下看,如果要从DI检索
IConfiguration
的实例,它可能不是您的版本(相反,它将是通常传递到
启动
ctor中的配置)。另一种方法是自定义传递到
启动
ctor中的
IConfiguration
,这是使用Program.cs中的
ConfigureAppConfiguration
完成的。
public class Program
    {
        public static void Main(string[] args) => CreateWebHostBuilder(args).Build().Run();

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>();
    }