.NET Core console application, how to configure appSettings per environment?

后端 未结 7 968
囚心锁ツ
囚心锁ツ 2020-12-04 14:15

I have a .NET Core 1.0.0 console application and two environments. I need to be able to use appSettings.dev.json and appSettings.test.json based on

7条回答
  •  情歌与酒
    2020-12-04 14:25

    There are two IHostingEnvironment interfaces that you should use. One is for ASP.NET Core Applications, the other one is for .NET Core Console applications. You can use this code example for both:

    using System;
    using System.IO;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.FileProviders;
    using Microsoft.Extensions.Hosting.Internal;
    
    namespace MyApplication.Common
    {
        public static class ConfigurationFactory
        {
            /// 
            /// Use for ASP.NET Core Web applications.
            /// 
            /// 
            /// 
            /// 
            public static IConfigurationBuilder Configure(IConfigurationBuilder config, IHostingEnvironment env)
            {
                return Configure(config, env.EnvironmentName);
            }
    
            /// 
            /// Use for .NET Core Console applications.
            /// 
            /// 
            /// 
            /// 
            private static IConfigurationBuilder Configure(IConfigurationBuilder config, Microsoft.Extensions.Hosting.IHostingEnvironment env)
            {
                return Configure(config, env.EnvironmentName);
            }
    
            private static IConfigurationBuilder Configure(IConfigurationBuilder config, string environmentName)
            {
                return config
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                    .AddJsonFile($"appsettings.{environmentName}.json", optional: true, reloadOnChange: true)
                    .AddEnvironmentVariables();
            }
    
            /// 
            /// Use for .NET Core Console applications.
            /// 
            /// 
            public static IConfiguration CreateConfiguration()
            {
                var env = new HostingEnvironment
                {
                    EnvironmentName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"),
                    ApplicationName = AppDomain.CurrentDomain.FriendlyName,
                    ContentRootPath = AppDomain.CurrentDomain.BaseDirectory,
                    ContentRootFileProvider = new PhysicalFileProvider(AppDomain.CurrentDomain.BaseDirectory)
                };
    
                var config = new ConfigurationBuilder();
                var configured = Configure(config, env);
                return configured.Build();
            }
        }
    }
    

提交回复
热议问题