如何从 .NET Core 中各自的属性文件加载不同 appsettings.json 文件的值

问题描述 投票:0回答:2

我正在开发一个 .NET Core 项目,其中每个环境(Dev、Prod)都有一个

appsettings.json
文件。我想从各自的属性文件加载这些应用程序设置文件的值(
application.dev.properties
application.prod.properties
)。

我尝试使用如下所示的 Addpropertiesfile 方法来实现此目的。

 using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.Configuration.JSON;

 var builder = new ConfigurationBuilder()
                      .SetBasePath(Directory.GetCurrentDirectory())
                      .AddJsonFile("appsettings.json")
                      .AddJsonFile($"appsettings.{environment}.json");

我怎样才能实现我想要做的事情?

c# asp.net-core .net-core properties-file appsettings
2个回答
0
投票

您不需要直接执行此操作。这是在 .net core 中默认完成的。请参阅下面的第 4 点,来自 Microsoft 文档

使用 dotnet new 或 Visual Studio 创建的 ASP.NET Core Web 应用程序 生成以下代码:

C#

var builder = WebApplication.CreateBuilder(args);

WebApplication.CreateBuilder 初始化一个新的实例 具有预配置默认值的 WebApplicationBuilder 类。这 初始化的WebApplicationBuilder(构建器)提供默认值 按以下顺序对应用程序进行配置,从最高到 最低优先级:

  1. 使用命令行配置提供程序的命令行参数。
  2. 使用非前缀环境变量配置提供程序的非前缀环境变量。
  3. 应用程序在开发环境中运行时的用户机密。
  4. appsettings.{Environment}.json 使用 JSON 配置提供程序。 例如,appsettings.Production.json 和 appsettings.Development.json.
  5. appsettings.json 使用 JSON 配置提供者。
  6. 回退到所描述的主机配置 在下一节中。

上面的c#代码将被放置在项目的Program.cs文件的Main函数中,如果其名称如图所示,可以自动检测并使用正确的appsettings.json文件。


-1
投票

在asp.net core中我们有

appsettings.json
appsettings.{Environment}.json
这样的结构:

无前缀环境变量是指除 ASPNETCORE_ 或 DOTNET_ 前缀之外的环境变量。 例如, ASP.NET Core Web 应用程序模板在

launchSettings.json

中设置 "ASPNETCORE_ENVIRONMENT": "Development"

"profiles": {
  "emp": {
    "commandName": "Project",
    "dotnetRunMessages": true,
    "launchBrowser": true,
    "applicationUrl": "https://localhost:7271;http://localhost:5058",
    "environmentVariables": {
      "ASPNETCORE_ENVIRONMENT": "Development"
    }
  },

来自ASP.NET Core中的配置

使用默认配置, EnvironmentVariablesConfigurationProvider 从以下位置加载配置 读取后的环境变量键值对

appsettings.json
appsettings.{Environment}.json
,以及用户秘密。因此,关键 从环境中读取的值会覆盖从
appsettings.json
appsettings.{Environment}.json
和用户机密中读取的值。

要加载不同

appsettings.json
文件的值,我们可以尝试先获取环境变量,然后在读取
appsettings.json
appsettings.{Environment}.json
后从环境变量键值对加载配置,如下代码:

var pathToExe = Process.GetCurrentProcess().MainModule.FileName;
var pathToContentRoot = Path.GetDirectoryName(pathToExe);
var environment= Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ;
var config = new ConfigurationBuilder()
    .SetBasePath(pathToContentRoot)
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
    .AddJsonFile($"appsettings.{environment}.json", optional: true, reloadOnChange: true)
    .AddEnvironmentVariables()
    .Build();

结果:

© www.soinside.com 2019 - 2024. All rights reserved.