.NET Core如何获取环境变量?

时间:2018-08-20 16:00:29

标签: c# linux environment-variables ubuntu-18.04

我知道要使用.NET Core获取环境变量,理论上使用 的库是System.Environment,方法为GetEnvironmentVariable(“ environmentVariableKeyHere”)。但是,在Linux(Ubuntu 18.04)上,这不是基于用户的环境变量。我设置了变量export THEVARIABLE="THEVALUE" ,. NET Core库和方法将无法使用。我什至使用了GetEnvironmentVariables()方法并查看了它确实提取的整个列表。该列表中没有用户环境变量。

我通过bash和boom在终端中运行一个echo $THEVARIABLE的比喻,变量在那里。该值将按预期返回,但仍然不会通过.NET程序返回。说到哪个,如果您想签出仓库,请在这里> https://github.com/Adron/InteroperabilityBlackBox。它是使用Rider + .NET Core 2.1构建的,并包括一个库(运行并尝试获取用户环境变量时是否有问题?),控制台应用程序和测试库。

2 个答案:

答案 0 :(得分:2)

根据docs

  

在MacOS和Linux上,GetEnvironmentVariables方法检索从启动dotnet进程的父进程继承的或在{的范围内定义的所有环境变量的名称和值。 {1}}自行处理。 dotnet进程结束后,这些后面的环境变量将不复存在。

     

.NET Core不支持按计算机或按用户的环境变量。

答案 1 :(得分:0)

似乎是在与Jetbrains Rider的用户会话中执行的,我正在使用此代码和该项目的初始开发。从那以后,我已经找到了两种解决方案。第一,可以将环境变量添加到Jetbrains Rider中的大多数项目中,以便它们执行并在该特定会话中可用。如果使用Visual Studio Code或仅从Bash Terminal执行,则用户会话的值当然可用。