【问题标题】:Why does .net load the prod json values when running via visual studio code?为什么 .net 在通过 Visual Studio 代码运行时会加载 prod json 值?
【发布时间】:2022-06-17 20:17:39
【问题描述】:

我创建了一个新的 .net web api 项目。

有 2 个 json 设置文件 - 1 个用于开发,另一个用于生产。

我将 key1 添加到 dev json 文件并将 key2 添加到 prod json 文件。

在我的 program.cs 中,我有以下代码:

builder.Configuration["key1"]
builder.Configuration["key2"]

即使我已经通过 Visual Studio 代码运行了项目,为什么它会从 prod json 文件中加载值?

【问题讨论】:

    标签: .net .net-6.0


    【解决方案1】:

    环境不受您运行应用程序的方式的影响。这是通过检查DOTNET_ENVIRONMENTASPNETCORE_ENVIRONMENT 环境变量来确定的。您可以配置您的 IDE 或编辑器以在启动项目时将这些环境变量设置为特定值,但这与打开控制台并设置环境变量没有什么不同。

    这在Used multiple environments in ASP.NET Core 中有所描述,但实际上适用于任何使用通用主机的 .NET Core 应用程序。

    不同的 IDE 在启动应用程序时使用不同的方式来指定调试配置文件和设置环境变量。

    • 在 Visual Studio 中,您可以在“调试属性”页面中指定环境变量。这些值存储在Properties\launchSettings.json 文件中。这在Development and launchsettings.json 中有描述。

    • JetBrains Rider 支持 launchSettings.json 及其自己的配置文件。

    • 另一方面,Visual Studio Code 将launch configurations 存储在.vscode 文件夹中的launch.json 文件中。它也可以通过在launch.json中设置一个属性来使用launchSettings.json

    Launch.json attributes 中描述了可用的属性。 env 属性允许指定环境变量。

    文章Configuring launch.json for C# debugging 描述了如何使用该文件来启动浏览器、导航到特定的 URL、设置环境变量等:

    "env": {
        "DOTNET_ENVIRONMENT":"Development"
    }
    

    同一文档通过设置launchSettingsProfile 属性显示how to use launchSettings.json in VS Code

    如果您在launchSettings.json 中有Development 个人资料:

    {
      "profiles": {
        "Development": {
          "commandName": "Project",
          "environmentVariables": {
            "DONTET_ENVIRONMENT":"Development"
          }
        }
      }
    }
    

    您可以通过在launch.json 中指定launchSettingsProfile 在VS Code 中使用它:

    "launchSettingsProfile": "Development"
    

    【讨论】:

      【解决方案2】:

      当项目运行时,它会从appsettings.json 中选择值,然后根据环境,它会从各自的环境的appsettings.{env}.json 文件中选择(和替换)值。

      以下是实现此目的的内部 .NET 代码:

      【讨论】:

        猜你喜欢
        • 2021-09-20
        • 2018-03-29
        • 2018-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-14
        • 2022-01-23
        • 2019-01-14
        相关资源
        最近更新 更多