在MacOS、.net Core 3.1 /.net 5.0上c#中看不到系统环境变量.(Visual Studio).



我试图在代码中使用环境变量。首先,我把它们放在~/中。我可以通过shell中的getenv和Java, NodeJS, Python中的相关方法来接收它们。

但是,这在c#中不起作用。


What I tried:

foreach (String name in Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Process).Keys)
{
Console.Write(name + "="); 
Console.WriteLine(Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Process)[name]);
}

打印几个环境变量。不是我需要的。


当我尝试:

foreach (String name in Environment.GetEnvironmentVariables(EnvironmentVariableTarget.User).Keys)
{
// Never get here                                                                                             
}
foreach (String name in Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Machine).Keys)
{
// Never get here                                                                                                }
}

打印不出任何东西。


如何找到我的环境变量?谢谢。

编辑:通过GUI重新启动Visual Studio没有帮助。env变量不是新的

有一次我关闭了Visual Studio并从终端打开了它

open /Applications/Visual Studio.app 

我在这里看到了所有的env变量:Environment.GetEnvironmentVariables (EnvironmentVariableTarget.Process)这与:Environment.GetEnvironmentVariables ()

所以这个问题似乎是Mac上的Visual studio特有的,有一个特定的解决方案。

修改代码

String API_Key = System.Environment.GetEnvironmentVariable("API_KEY", EnvironmentVariableTarget.Machine)

String API_Key = System.Environment.GetEnvironmentVariable("API_KEY", EnvironmentVariableTarget.Process)

在MacOS上为我工作,因为EnvironmentVariableTarget。Machine应该在上使用。. NET实现仅在Windows系统上运行.

从Mac版17.5.1 Visual Studio 2022开始,你可以进入项目属性>>运行在比;配置在祝辞默认的在比;环境变量部分,你可以在VS可以看到的地方点击添加变量和值。这样就不需要从终端启动它。现在对我自己来说,我的路径是正确的,但是我的单元测试不能启动nuget chrome驱动程序。我需要找出为什么chromedriver.exe被复制到输出文件夹(bin/Debug),而不是Unix/mac可执行文件。Geckodriver工作得很好。

最新更新