在 launchSettings.json 中引用环境变量的值



我使用的是.NET Core 6.0.100和MS Visual Studio Community 2022 17.0.2

我开发了一个终端应用程序,使用目标的MAC和IP地址作为输入。由于它是一个开源项目(repo还没有公开(,我希望在推送repo时避免在launchSettings.json中发布我在测试它时使用的MAC地址。我想用环境变量代替硬编码

在不在程序中实现额外逻辑的情况下,在launchSettings.json中引用环境变量的值是否可能且合理,或者我应该使用.gitignore过滤器/其他解决方案?

目前,这就是我的launchSettings.json的样子(显示的MAC地址当然是随机的(:

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

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

是的,可以引用环境变量的值,结果证明解决方案是微不足道的。为此,只需将变量名用百分号%括起来即可。

示例launchSettings.json:

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

编辑:

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

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

相关线程:Python:环境变量未更新未使用当前值更新环境变量

最新更新