使用环境变量覆盖 ASP.NET 嵌套配置

ult*_*ife 6 asp.net powershell asp.net-core

如果配置文件中有嵌套结构,那么在 Powershell 等命令行环境中使用什么命名约定或变量名称格式来覆盖该值?

.NET config.json 文件:

{
    "L1a": {
        "L1a2a": {
            "L1a2a1": "value"
        },
        "L2b": false
    },
    "L1b": false
}
Run Code Online (Sandbox Code Playgroud)

从 .NET 应用程序代码中,可以像这样访问配置值:

configObject["L1a:L1a2a:L1a2a1"];
configObject["L1a:L2b"];
configObject["L1b"];
Run Code Online (Sandbox Code Playgroud)

使用环境变量覆盖顶级值很容易 - 只需使用相同的键名:

$env:L1b = "true"
Run Code Online (Sandbox Code Playgroud)

如何在 Powershell 中设置环境变量以覆盖嵌套配置文件值?

L1a:L1a2a:L1a2a1L1a-L2b不是有效的环境变量名称。使用下划线之类的L1a_L2b不起作用。

Ans*_*ers 2

您可以通过将变量名称括在大括号中来定义/访问名称中包含冒号(或其他特殊字符)的环境变量:

${env:L1a:L1a2a:L1a2a1} = 'othervalue'
Run Code Online (Sandbox Code Playgroud)