我使用的是.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:环境变量未更新未使用当前值更新环境变量