【问题标题】:Referring to environment variable's value inside launchSettings.json在 launchSettings.json 中引用环境变量的值
【发布时间】:2022-01-09 20:35:06
【问题描述】:

我正在使用 .NET Core 6.0.100 和 MS Visual Studio Community 2022 17.0.2

我开发了一个终端应用程序,它使用目标的 MAC 和 IP 地址作为输入。因为它是一个开源项目(repo 尚未公开),所以我想避免在launchSettings.json 内发布我在测试它时使用的 MAC 地址,同时推送到 repo。我想到了使用环境变量而不是硬编码。

是否可以在launchSettings.json 中引用环境变量的值而不在程序中实现额外的逻辑,或者我应该使用.gitignore 过滤器/其他一些解决方案吗?

目前这是我的launchSettings.json 的外观(显示的 MAC 地址当然是随机的):

{
  "profiles": { 
    "ProgramName": {
      "commandName": "Project",
      "commandLineArgs": "BC:34:2B:4C:AB:BE 192.168.0.12"
    }
  }
}

我尝试将命令参数作为launchSettings.json 内的环境变量"commandLineArgs": "$COMMAND_PARAMETERS" 的值传递,但它被识别为纯文本而不是环境变量,因此值:"$COMMAND_PARAMETERS" 作为args[0] 传递。

【问题讨论】:

  • Stackoverflow 不是免费的代码编写服务。你必须展示你到目前为止所做的事情以及你将把代码放在哪里
  • 搜索“.NET Core and Secrets”
  • @Serge 你是对的,我已经编辑了这个问题,以便它包含我迄今为止尝试过的内容。
  • @Andy 我已经查看了这篇文章,谢谢!然而,我似乎需要修改程序代码才能通过 API 获取秘密数据。

标签: c# json .net environment-variables


【解决方案1】:

是的,可以引用环境变量的值,结果证明解决方案很简单。为此,只需将变量名称用百分号 % 括起来。

例如launchSettings.json

{
  "profiles": {
    "WakeFW": {
      "commandName": "Project",
      "commandLineArgs": "%COMMAND_PARAMETERS%"
    }
  }
}

编辑:

虽然上述解决方案可以正常工作,但我发现它在用于调试应用程序时非常麻烦。在开发过程中,我想使用不同的输入参数检查应用程序的行为,因此我更改了环境变量的值并重新执行了应用程序。原来是使用旧变量的值,好像没有更新一样。

解释: 环境变量在启动期间传递给 MS Visual 环境。 MSV 然后根据自己的环境为被调试的应用程序创建子环境。如果同时更改了环境变量,则新创建的环境将使用其新值。但是,那些已经运行的环境仍然会使用它的旧值。为了在 MSV(被调试的应用程序的父环境)中“更新”环境变量的值,需要重新启动它。

相关话题: Python: Environment Variables not updating Environment variable not updating with current value

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    • 2010-11-27
    • 2020-07-22
    • 2015-03-05
    • 2022-10-26
    相关资源
    最近更新 更多