You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向.NET控制台应用添加额外的IConfigurationProvider?

解决控制台应用读取appsettings.Development.json配置失败的问题

核心原因:环境变量未设置为Development

Host.CreateDefaultBuilder(args)默认仅在Development环境下加载appsettings.Development.json,而控制台应用的默认环境是Production,因此该配置文件不会被自动加载。

解决步骤:

  1. 设置环境变量

    • Windows(命令行):
      set ASPNETCORE_ENVIRONMENT=Development
      
    • Windows(PowerShell):
      $env:ASPNETCORE_ENVIRONMENT = "Development"
      
    • Linux/macOS:
      export ASPNETCORE_ENVIRONMENT=Development
      

    也可以在项目属性的「调试」选项卡中,添加环境变量ASPNETCORE_ENVIRONMENT=Development。

  2. 验证配置文件结构
    确保appsettings.Development.json中的MyAppSettings为根级别节点,示例结构:

    {
      "MyAppSettings": {
        "Key1": "Value1",
        "Key2": "Value2"
      }
    }
    

    检查节点名称拼写是否与代码中的MyAppSettings完全一致(区分大小写)。

  3. 手动强制加载配置文件(可选)
    若环境变量设置后仍无法加载,可手动添加配置源覆盖默认逻辑:

    Host.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((hostingContext, config) =>
        {
            config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                  .AddJsonFile($"appsettings.{hostingContext.HostingEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true)
                  .AddEnvironmentVariables();
        })
        .ConfigureServices((hostContext, services) =>
        {
            var mySettingsSection = hostContext.Configuration.GetSection("MyAppSettings");
            // 后续业务逻辑
        });
    
  4. 确认文件复制状态
    前往项目输出目录(如bin/Debug/net8.0),检查是否存在appsettings.Development.json文件且内容与项目内一致。若未复制,重新确认文件的「Build action」为Content、「Copy to output directory」为Copy always。

补充说明

Web应用默认会通过启动设置自动将环境设为Development,而控制台应用无此默认配置,这是两者行为差异的核心原因。

内容的提问来源于stack exchange,提问作者user20326571

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 12:57:06