C# 如何使用.NETCore获取环境变量?

C# 如何使用.NETCore获取环境变量?,c#,linux,environment-variables,ubuntu-18.04,C#,Linux,Environment Variables,Ubuntu 18.04,我知道,要获得具有.NET核心的环境变量,理论上要使用的库是System.environment,方法是GetEnvironmentVariable(“environmentVariableKeyHere”)。然而,在Linux(Ubuntu18.04)上,这并没有获取我基于用户的环境变量。我设置了变量export THEVARIABLE=“THEVALUE”,而.NET核心库和方法将不会获取它。我甚至使用了GetEnvironmentVariables()方法并查看了它所收集的整个列表。列表中

我知道,要获得具有.NET核心的环境变量,理论上要使用的库是System.environment,方法是GetEnvironmentVariable(“environmentVariableKeyHere”)。然而,在Linux(Ubuntu18.04)上,这并没有获取我基于用户的环境变量。我设置了变量
export THEVARIABLE=“THEVALUE”
,而.NET核心库和方法将不会获取它。我甚至使用了GetEnvironmentVariables()方法并查看了它所收集的整个列表。列表中没有/的用户环境变量

我通过bash和boom在终端中运行simle
echo$THEVARIABLE
,变量就在那里。该值按预期返回,但通过.NET程序仍然没有返回任何值。说到这里,回购协议就在这里>如果你想查看的话。它是用Rider+.NET Core 2.1构建的,包括一个库(运行和尝试获取用户环境变量时会出现问题吗?)、控制台应用程序和测试库。

根据:

在MacOS和Linux上,
GetEnvironmentVariables
方法检索从启动
dotnet
进程的父进程继承的或在
dotnet
进程本身范围内定义的所有环境变量的名称和值。一旦
dotnet
过程结束,后面这些环境变量就不再存在

.NET Core不支持每台计算机或每用户环境变量


看起来事情是在与Jetbrains Rider的用户会话之外执行的,我在本代码和本项目的初始开发中使用了Jetbrains Rider。后来我想出了两个解决办法。首先,可以将环境变量添加到Jetbrains Rider中的大多数项目中,以便它们在特定会话中执行和可用。如果使用Visual Studio代码或仅从Bash终端执行,则用户会话的值当然可用。

不确定我是否正确理解这一点。这是否意味着我们不能在Unix计算机上指定全局环境变量?例如,如果我在一台Linux机器上开发所有应用程序,我可以在机器上设置
ASPNETCORE\u环境
变量吗,或者我的每个应用程序都必须指定这个变量(例如,在vscode的launch.json中)?