【发布时间】:2021-09-26 17:06:32
【问题描述】:
在完整的 .NET 中,我们可以将 EnvironmentVariableTarget 枚举传递给 Environment.SetEnvironmentVariable 调用:
public enum EnvironmentVariableTarget
{
Process,
User,
Machine
}
使用User 或Machine 选项,我们可以设置用户范围或系统范围的变量,该变量在应用程序结束后仍然有效:
Environment.SetEnvironmentVariable("foo", "bar", EnvironmentVariableTarget.User);
...
> echo %foo%
bar
但是,Environment.SetEnvironmentVariable 不接受 .NET Core 中的变量目标。甚至这种方法的 XML 注释都说:
创建、修改或删除存储在当前进程中的环境变量。
如何在面向 .NET Core 的应用程序中设置用户范围或机器范围的环境变量?只有跨平台解决方案才有意义(至少是 Windows 和 Linux)。
【问题讨论】:
-
大多数 linux 发行版都有不同的环境变量设置机制。 mac 也有它自己的(虽然类似于许多 linux 风格)。你需要看看你的目标系统需要什么,这里没有真正的跨平台解决方案——我想只有 Windows 才是真正的痛点(在 linux 上,它主要是在已知位置添加一个文件)。跨度>
标签: c# environment-variables cross-platform .net-core