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

clj7thdc  于 2023-03-13  发布在  .NET
关注(0)|答案(2)|浏览(157)

我尝试在代码中使用环境变量,首先我在~/.zprofile中设置了环境变量,我可以通过shell中的getenv和Java、NodeJS、Python中的相关方法接收环境变量。
但是,这在C#中不起作用。
我尝试了:foreach(环境.获取环境变量(环境变量目标.进程).键中的字符串名称){控制台.写入(名称+“=”);控制台.WriteLine(环境.获取环境变量(环境变量目标.进程)[名称]);}这确实打印了几个env变量。不是我需要的那些。
当我尝试时:

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变量不是新的。

jtw3ybtb

jtw3ybtb1#

一旦我关闭了VisualStudio并从终端打开它

open /Applications/Visual\ Studio.app

我在这里看到了所有的env变量:环境.获取环境变量(环境变量目标.进程),它与以下内容相同:获取环境变量()
因此,这个问题似乎是Mac上的Visual Studio特有的,有一个特定的解决方案。

af7jpaap

af7jpaap2#

从版本17.5.1 Visual Studio 2022 for Mac开始,你可以进入项目属性〉〉运行〉〉配置〉〉默认〉〉环境变量部分,你可以点击添加变量和值,在那里VS可以看到它。这样你就不需要从终端启动它了。现在对我来说,我得到了正确的路径,但是我的单元测试无法启动nuget chrome驱动程序。我需要找出为什么chromedriveriderexe被复制到输出文件夹(bin/Debug)而不是Unix/mac可执行文件。尽管Geckodriver工作正常。

相关问题