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

.NET Framework 4.8控制台应用实现appsettings.json环境变换及POCO读取

.NET Framework 实现多环境 appsettings.json 配置方案

完全可以通过环境变量或**Configuration Manager(原App.Config配置)**来指示ConfigurationBuilder加载对应环境的配置文件,以下是干净、可落地的实现方案:

1. 基础依赖准备

先安装必要的NuGet包:

Install-Package Microsoft.Extensions.Configuration
Install-Package Microsoft.Extensions.Configuration.Json
Install-Package Microsoft.Extensions.Configuration.EnvironmentVariables

2. 核心配置加载逻辑

在控制台入口项目中,通过ConfigurationBuilder实现基础配置+环境配置分层覆盖(环境配置会覆盖基础配置中同名项),同时支持通过环境变量或App.Config指定当前环境:

using Microsoft.Extensions.Configuration;
using System;
using System.Configuration;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        // 1. 获取当前环境标识:优先取环境变量,其次取App.Config,默认Development
        var environment = Environment.GetEnvironmentVariable("ENVIRONMENT") 
                          ?? ConfigurationManager.AppSettings["Environment"] 
                          ?? "Development";

        // 2. 构建配置加载链
        var config = new ConfigurationBuilder()
            .SetBasePath(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location))
            // 加载基础配置(必填)
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            // 加载对应环境的配置(可选,覆盖基础配置)
            .AddJsonFile($"appsettings.{environment}.json", optional: true, reloadOnChange: true)
            // 最后加载环境变量(优先级最高,用于紧急覆盖)
            .AddEnvironmentVariables()
            .Build();

        // 示例:读取配置项
        var apiUrl = config["Api:BaseUrl"];
        Console.WriteLine($"当前环境:{environment},接口地址:{apiUrl}");
    }
}

3. 不同环境的切换实现

调试环境(VS开发时)

  • 方式1:用环境变量
    右键控制台项目 → 属性 → 调试 → 环境变量,添加ENVIRONMENT变量,值设为Development/UAT/Production,调试时自动生效。
  • 方式2:用App.Config + 配置变换
    在App.Config中添加环境标识:
    <appSettings>
      <add key="Environment" value="Development" />
    </appSettings>
    
    借助SlowCheetah工具(VS扩展)创建App.Config的变换文件(如App.UAT.config、App.Production.config),变换Environment的值,调试时选择对应变换配置即可。

发布/UAT环境

  • 方式1:系统环境变量
    在部署机器上设置系统环境变量ENVIRONMENT为对应环境值(如UAT),启动控制台程序时自动读取。
  • 方式2:启动脚本指定
    创建启动批处理文件,先设置环境变量再启动程序:
    set ENVIRONMENT=UAT
    YourConsoleApp.exe
    
  • 方式3:App.Config变换
    发布时通过SlowCheetah变换App.Config的Environment值,部署后程序会读取该值加载对应json配置。

4. 注意事项

  • 确保所有appsettings*.json文件的属性设置为复制到输出目录:如果较新则复制,避免部署时缺失配置文件。
  • 环境配置文件设为可选(代码中optional: true),若某个环境无单独配置,会自动 fallback 到基础配置。
  • 优先级顺序:环境变量 > 环境json配置 > 基础json配置 > App.Config,可根据需求调整加载顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 00:50:05