gpt4 book ai didi

c# - 如何在 .NET Core 中设置全局环境变量(用户范围或系统范围)

转载 作者:行者123 更新时间:2023-11-30 21:40:48 25 4
gpt4 key购买 nike

在完整的 .NET 中,我们可以将 EnvironmentVariableTarget 枚举传递给 Environment.SetEnvironmentVariable 调用:

public enum EnvironmentVariableTarget
{
Process,
User,
Machine
}

使用 UserMachine 选项,我们可以设置一个用户范围或系统范围的变量,该变量在应用程序结束后仍然有效:

Environment.SetEnvironmentVariable("foo", "bar", EnvironmentVariableTarget.User);

...

> echo %foo%
bar

但是,Environment.SetEnvironmentVariable 不接受 .NET Core 中的变量目标。甚至这个方法的 XML 注释也说:

Creates, modifies, or deletes an environment variable stored in the current process.

如何在面向 .NET Core 的应用程序中设置用户范围或机器范围的环境变量?只有跨平台解决方案才有意义(至少是 Windows 和 Linux)。

最佳答案

对于 .NET Core 1.x,它只允许在用户上下文中设置环境变量。在新的 .NET Core 2.0 预览版中,它允许使用 EnvironmentVariableTarget。然而,根据this GitHub 问题设置用户或机器环境变量在非 Windows 平台上不起作用。

Using other scopes (e.g. User, Machine) on non-Windows platforms) is not mapped in the implementation.

GitHub issue中还描述了使用变通方法检查是否是非windows平台来设置环境变量。例如:

// omitting check for presence of bash binaryif (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) System.Diagnostics.Process.Start("/bin/bash", "-c export " + variable + "=" + value);

关于c# - 如何在 .NET Core 中设置全局环境变量(用户范围或系统范围),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44243637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com