.NET Core控制台应用程序,如何根据环境配置appSettings?

103
我有一个.NET Core 1.0.0控制台应用程序和两个环境。我需要能够根据我在运行时设置的环境变量使用appSettings.dev.jsonappSettings.test.json。这对于ASP.NET Core web应用程序来说似乎非常直截了当,通过依赖注入、IHostingEnvironment和EnvironmentName环境变量进行,但是对于控制台应用程序,除了编写自己的自定义代码使用Microsoft.Framework.Configuration.EnvironmentVariables之外,我该如何连接它们呢?谢谢。
12个回答

0

嗨,我使用以下方法从控制台应用程序中获取调用API的BaseURL,配置json文件

 public  class Helper
    {
        public static string GetConfigurationItems()
        {
            string? url;
            ConfigurationItems cf = new ConfigurationItems();

            var builder = new ConfigurationBuilder()
                               .AddJsonFile("appsettings.json", optional: true);
            IConfigurationRoot configuration = builder.Build();
            configuration.GetSection("ConfigurationItem").Bind(cf);
            url= cf.BaseURL;
            return url;
        }
       
    }

这是 appsetting.json 文件

    {
  "ConfigurationItem": {
      "BaseURL": "https://localhost:46356"
    }
  }

这是将基本网址和 API 路由连接起来的操作。
            string apiURL = Helper.GetConfigurationItems() + 
"api/Employee/getAllEmployees";

并且更改 appsetting.json 文件的设置:属性中的输出目录复制 = 始终复制


0

我尝试了@Merilix2分享的答案,但对我没有帮助。

对于.NET Core 7,在控制台应用程序中,以下方法对我有效。

  1. 右键单击项目,选择最后一个选项属性
  2. 进入调试,然后选择常规
  3. 点击链接打开调试启动配置界面
  4. 在打开的窗口中搜索环境变量选项。设置名称,其中名称是键。

下面的截图可以更好地帮助。

How to use appsettings as per environment in Console app

你必须将 appsettings.Development.json 的 "Copy to Output Directory" 设置为 "始终复制",或根据你的环境进行适配。

Properties window for appsettings.Development.json file

我忘了分享我有像这样设置的 ConfigurationBuilder

private static ConfigurationBuilder GetConfigBuilder()
{
    var builder = new ConfigurationBuilder();

    builder.SetBasePath(Directory.GetCurrentDirectory())
        .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
        .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", optional: true)
        .AddEnvironmentVariables();

    return builder;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接