gpt4 book ai didi

c# - .NET Core 3.1 应用程序找不到环境变量

转载 作者:行者123 更新时间:2023-12-03 23:27:21 25 4
gpt4 key购买 nike

我无法让我的 .NET Core 3.1 控制台应用程序识别我的自定义系统环境变量。我可以拉和打印其他系统变量,例如用户名就好了。但是,如果我在下面的示例中设置了一个像“TestKey”这样的自定义项,它们在应用程序中始终为空。

这是我的代码:

static void Main()
{
var config = new ConfigurationBuilder().AddEnvironmentVariables().Build();
var value = config.GetValue<string>("TestKey");
var envValue = Environment.GetEnvironmentVariable("TestKey");
Console.WriteLine($"Config Variable is: {value}");
Console.WriteLine($"Environment Variable: {envValue}");
}

这是输出:

console output

和系统变量清楚地显示变量已设置:

system variable screenshot

同样,当我从命令提示符对 TestKey 变量执行回显时,它会正确返回关联的值。

command prompt output

这是一台 Windows 10 专业版计算机,它不属于域。这种行为着实令人费解。我重新启动了计算机,系统变量仍然存在,但仍然不会出现在应用程序中。

最佳答案

这里有两个要点。一、根据Configuration in ASP.NET Core , 只为当前进程检索环境变量

Are only set in processes launched from the command window they were set in



因此,您应该在启动应用程序之前在同一命令窗口中设置它们或添加到 launchsettings.json文件

"environmentVariables": {
"Test": "Test",
"ASPNETCORE_ENVIRONMENT": "Development"
}

并为此重新启动 Visual Studio。或者只是在项目的调试属性中更改它

enter image description here

二、能够在 GetEnvironmentVariable 中获取系统环境变量方法,您应该指定 EnvironmentVariableTarget.Machine范围

var envValue = Environment.GetEnvironmentVariable("Test", EnvironmentVariableTarget.Machine);

默认情况下

The GetEnvironmentVariable(String) method retrieves an environment variable from the environment block of the current process only



或者,如果您将变量添加到 launchsettings.json在上一点中,不需要设置目标。

但是,如果您将通过 dotnet run 在命令行中运行您的项目,您也应该能够访问系统环境变量,因为

On Windows systems, the environment block of the current process includes:

  • All environment variables that are provided to it by the parent process that created it. For example, a .NET application launched from a console window inherits all of the console window's environment variables.

  • If there is no parent process, per-machine and per-user environment variables are used instead. For example, a new console window has all per-machine and per-user environment variables defined at the time it was launched.

关于c# - .NET Core 3.1 应用程序找不到环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61161285/

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