gpt4 book ai didi

c# - 来自 launchsettings.json 的环境变量正在测试中使用吗?

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

我有一个 .NET Core 构建管道,用于在 Azure DevOps 上运行一些测试。每个环境的设置都存储在配置文件中,例如:

  • appsettings.json
  • appsettings.qa.json
  • appsettings.test.json

  • 构建非常基础 - 它包含一个 dotnet restore , dotnet builddotnet test任务:
    Build definition ASPNETCORE_ENVIRONMENT环境变量设置在 变量 构建管道的部分:
    Build variables
    这些构建在包含多个构建代理(私有(private),非托管)的 VM 上运行。
    现在奇怪的部分 - 有时构建会选择错误的设置! .
    经过一些调查并添加了更多日志记录,我们意识到 ASPNETCORE_ENVIRONMENT有时值是 Development-Selfhost , 而不是 QA .该值似乎来自 launchsettings.json测试项目引用的项目文件:
    {
    "profiles": {
    "MyProject.PublicApi": {
    "commandName": "Project",
    "launchBrowser": false,
    "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development-Selfhost"
    },
    "applicationUrl": "http://localhost:5028/"
    }
    }
    }
    根据 Use multiple environments in ASP.NET Core , launchSettings.json使用 dotnet run 启动应用程序时使用文件:

    launchSettings.json is read if available. environmentVariables settings in launchSettings.json override environment variables.


    添加 launchSettings.json.gitignore解决了我的问题,但是如果我不执行 dotnet run,我试图理解为什么它会使用这些设置我的构建管道中的命令。另外,为什么这种行为如此随机?有时它使用正确的设置,有时则没有。
    更新 1(2019 年 13 月 12 日):
    我检查了日志,我可以确认文件 launchSettings.json复制到 bin测试项目的文件夹。
    我尝试为 ASPNETCORE_ENVIRONMENT 设置不同的值其他任何地方都没有设置:
    {
    "profiles": {
    "MyProject.PublicApi": {
    "commandName": "Project",
    "launchBrowser": false,
    "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Rui"
    },
    "applicationUrl": "http://localhost:5028/"
    }
    }
    }
    行为基本相同 - 有时它使用管道中设置的值,有时它会使用 launchSettings.json 中设置的值并且会失败,因为没有对应的配置文件:

    System.IO.FileNotFoundException : The configuration file 'appsettings.Rui.base.json' was not found and is not optional.

    最佳答案

    我也遇到了类似的问题,但在我的情况下,“launchSettings.json”中的环境变量总是覆盖其他配置。

    我通过在 launchSettings.json 中设置多个配置文件来解决它

    {
    "profiles": {
    "grpc-server": {
    "commandName": "Project",
    "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
    },
    "applicationUrl": "http://0.0.0.0:5001"
    },
    "staging-profile": {
    "commandName": "Project",
    "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Staging"
    },
    "applicationUrl": "http://0.0.0.0:5000"
    },
    "live-profile": {
    "commandName": "Project",
    "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Production"
    },
    "applicationUrl": "http://0.0.0.0:80"
    }
    }
    }

    并传递配置文件名称
    dotnet run --launch-profile {profile-name}

    关于c# - 来自 launchsettings.json 的环境变量正在测试中使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59266559/

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