using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
public static async Task Main()
TestSetEnv(new Dictionary<string, string>
var host = CreateHostBuilder(new string[0]);
await host.RunConsoleAsync();
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices(services => services.AddHostedService<ConfigurationReader>())
.ConfigureAppConfiguration((hostingContext, config) =>
config.AddEnvironmentVariables();
.ConfigureLogging(b => b.AddConsole());
public static void TestSetEnv(IDictionary<string, string> configurationList)
foreach (var cfg in configurationList)
Environment.SetEnvironmentVariable(cfg.Key, cfg.Value, EnvironmentVariableTarget.Process);
public class ConfigurationReader: IHostedService
private readonly ILogger _logger;
private readonly IConfiguration _configuration;
public ConfigurationReader(IConfiguration configuration, ILogger<ConfigurationReader> logger)
_configuration = configuration;
public Task StartAsync(CancellationToken token)
var items = _configuration.AsEnumerable();
foreach(var item in items)
_logger.LogInformation("{0}: {1}", item.Key, item.Value);
return Task.CompletedTask;
public Task StopAsync(CancellationToken token)
return Task.CompletedTask;