C# 环境变量没有像我希望的那样改变

C# 环境变量没有像我希望的那样改变,c#,asp.net-core,C#,Asp.net Core,我使用PowerShell将值“Test”设置为ASPNETCORE_环境,但当我启动我的应用程序时,它从launchSettings.json获取值 [Environment]::SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Test", "Machine") 如果我从launchSettings.json中删除该值,该值将更改为“生产”,而不是“测试” 我做错了什么 我将把它部署到AWS Beanstalk上的两个不同应用程序中,并发送

我使用PowerShell将值“Test”设置为ASPNETCORE_环境,但当我启动我的应用程序时,它从launchSettings.json获取值

[Environment]::SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Test", "Machine")
如果我从launchSettings.json中删除该值,该值将更改为“生产”,而不是“测试”

我做错了什么

我将把它部署到AWS Beanstalk上的两个不同应用程序中,并发送一个脚本文件来更改环境变量

var builder = new ConfigurationBuilder()
    .SetBasePath(env.ContentRootPath)
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
    .AddEnvironmentVariables();
My launchSettings.json

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:60511/",
      "sslPort": 44392
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "myapp",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "MonitoraApi": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "myapp",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:60512"
    }
  }
}
我可以通过执行PowerShell命令和以下代码获得值“Test”:

var environment = Environment.GetEnvironmentVariable(
    "ASPNETCORE_ENVIRONMENT",
    EnvironmentVariableTarget.Machine);

这是预期的行为,根据:

本地机器开发环境可以在项目的
Properties\launchSettings.json
文件中设置。launchSettings.json中设置的环境值覆盖系统环境中设置的值

因此,你的问题(“我做错了什么?”)的答案如下: 您不应该在生产环境中使用
launchsettings.json
(因此只需将其从源代码管理中删除并忽略,或者修改部署脚本,使其不会复制此文件)。
launchsettings.json
是一种便于在开发机器上进行简单测试的工具

你用过吗。您可以尝试向我们显示一些代码。是否将其添加到运行ASP服务的用户的环境中?是否在同一powershell脚本中运行您的应用程序?Powershell只能为当前会话设置环境变量,它们在脚本结束时被还原。您完全理解我的疑问。谢谢!!!究竟为什么我必须告诉
GetEnvironmentVariable
使用
EnvironmentVariableTarget.Machine
?在找到你的答案之前,我已经用头撞了这堵墙1.5天了。但愿我能投更多的票。