C#.net Core 2.1系统环境变量控制台应用程序未加载

qwe*_*906 3 .net console-application .net-core-2.1

我正在使用c#.net core 2.1 CONSOLE应用程序。我可以使用以下方式查看预定义的系统环境变量:

configuration.GetValue<string>("TMP") 
Run Code Online (Sandbox Code Playgroud)

但是,当我创建一个新的系统变量时,它对应用程序是不可见的。

如果将鼠标悬停在配置上,则会看到JsonConfigurationProvider和EnvironmentVariablesConfigurationProvider,但未列出我创建的那个。

例如,我在名为Database的计算机上创建了一个新的系统环境变量。我想我可以调用的是使用configuration.GetValue(“ Database”)

这就是我加载配置的方式。

configuration = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                .AddEnvironmentVariables().Build();
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?记住,我使用的是控制台应用程序,而不是ASP.NET。

Sia*_*ash 5

您不应该更改System Environment Variable,而必须更改Project Environment Variable通过右键单击项目并选择“属性”,或者只需打开launchSettings.json,您将看到配置文件列表:

{
  ...
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
         "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "WebApplication14": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

而且,当您编辑或添加变量时,请不要忘记重新启动应用程序。

  • 并不是我想要的。我的目标是将数据库连接字符串移动到环境变量中并从那里读取它。我不希望用户必须在PROD中处理.json文件。我看到有人在使用它,但是所有示例都在.AddEnvironmentVariables()处停止。我没有看到任何有关如何添加新的环境变量然后在控制台应用程序中使用它的示例。希望能帮助理解我的问题。 (2认同)
  • @Siavish,谢谢。我明白了 因此,在客户端计算机上,他们将不得不在其中添加一个环境变量,以匹配我在“调试”部分中创建的名称。正确? (2认同)