c# - 使用环境变量覆盖 App.config 值

标签 c# environment-variables appsettings

我有一个 C# 控制台程序,可以打印 App.config 值。我可以从环境变量中覆盖这个值吗?

示例 App.config:

  <appSettings>
    <add key="TestKey" value="Foo"/>
  </appSettings>

示例代码:

  Console.WriteLine($"Key: {ConfigurationManager.AppSettings["TestKey"]}");

我尝试只设置 key 名称,但这显然不起作用:

C:\> set TestKey=Bar
C:\> ConsoleApp2.exe
Key: Foo

最佳答案

ConfigurationManager 类不会为您执行此操作,它只会从您的应用配置中读取。要解决此问题,您可以使用函数来获取变量并使用它,而不是直接调用 ConfigurationManager.AppSettings。无论如何,这都是一个很好的做法,因为这意味着您可以轻松地将配置移动到 JSON 文件或数据库中,并且不需要更新旧方法的每个用法。

例如:

public string GetSetting(string key)
{
    var value = Environment.GetEnvironmentVariable(key);

    if(string.IsNullOrEmpty(value))
    {
        value = ConfigurationManager.AppSettings[key];
    }

    return value;
}

关于c# - 使用环境变量覆盖 App.config 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52404567/

相关文章:

c# - 如何从 appsettings.json 文件中的对象数组读取值

initialization - c# 从数据库初始化Appsettings

C# 将 System.Func<Tderived, bool> 转换为 System/Func<Tbase, bool>

c# - 在 gridview 中隐藏分页号码?

.htaccess 和环境变量(如果没有 Env,则执行 X)

java - Spring Boot集成测试: Mock Environment Interface

c# - 从托管或生成进程调用非托管代码

c# - 从 C# 调用 ReadLine() 后,FileStream 位置关闭

environment-variables - COBOL 从环境中接受返回 "Invalid parameter error"

.net - 为什么 .NET 中没有 XML 可序列化字典?