Esta es la contestación más correcta que encomtrarás aportar, pero primero obsérvala pausadamente y analiza si se adapta a tu proyecto.
Solución:
Así es como lo hacemos en nuestro .netcore
aplicación de consola. El key aquí es para incluir el derecho dependencias en su proyecto a saber (puede que no sea todo, verifique según sus necesidades) y copiar a la salida appSetting.json como parte de tu opciones de construcción
{
"buildOptions":
"emitEntryPoint": true,
"copyToOutput":
"include": [
"appsettings*.json",
"App*.config"
]
,
using Microsoft.Extensions.Configuration;
namespace MyApp
public static void Main(string[] args)
var environmentName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
var builder = new ConfigurationBuilder()
.AddJsonFile($"appsettings.json", true, true)
.AddJsonFile($"appsettings.environmentName.json", true, true)
.AddEnvironmentVariables();
var configuration = builder.Build();
var myConnString= configuration.GetConnectionString("SQLConn");
Para aquellos que usan .NET Core versión 2.1.0+ y Microsoft.Extensions.Hosting para alojar su aplicación de consola, pueden usar el siguiente código (de acuerdo con la respuesta de Feiyu Zhou en otro hilo):
var hostBuilder = new HostBuilder()
.ConfigureHostConfiguration(config =>
if (args != null)
// enviroment from command line
// e.g.: dotnet run --environment "Staging"
config.AddCommandLine(args);
)
.ConfigureAppConfiguration((context, builder) =>
builder.SetBasePath(AppContext.BaseDirectory)
.AddJsonFile("appsettings.json", optional: false)
.AddJsonFile($"appsettings.context.HostingEnvironment.EnvironmentName.json", optional: true);
)
Hay dos IHostingEnvironment
interfaces que debe utilizar. Uno es para aplicaciones ASP.NET Core, el otro es para aplicaciones de consola .NET Core. Puede usar este ejemplo de código para ambos:
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") ?? "Production",
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();