为 ASP.NET Core 配置引用 appsettings.json 中的另一个 json 文件

Posted

技术标签:

【中文标题】为 ASP.NET Core 配置引用 appsettings.json 中的另一个 json 文件【英文标题】:Reference another json file in appsettings.json for ASP.NET Core configuration 【发布时间】:2018-02-13 23:13:14 【问题描述】:

在使用 XML 配置的“过去”中,可以包含来自另一个文件(如 this)的部分配置:

<appSettings file="relative file name">
    <!-- Remaining configuration settings -->
</appSettings>

现在在 ASP.NET Core 中,我想在 appsettings.Development.json 以及例如 appsettings.Staging.json 中分享一些配置。像 &lt;appSettings file=""&gt; 这样的东西是否也可以使用 json 配置?

【问题讨论】:

您可以在启动代码中添加任意数量的 JSON 文件。 当然,但我试图防止 json 文件本身之间的重复 不清楚您所说的“防止重复”是什么意思。您不需要在其他文件中有重复的内容,只需根据需要添加新的位,框架会负责将它们合并到更大的配置中。如果存在,每个附加文件将覆盖前一个文件中的值,否则将添加到它。 问题对我来说很清楚。 web.config 文件,即允许您外部引用其他配置文件link 现在,我有一个主机 prj 和一个 mirgrate prj,我必须同时维护它们。 【参考方案1】:

您可以在 Startup 类中添加多个配置文件:

public class Startup

    public Startup(IHostingEnvironment env)
    
        var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
            .AddJsonFile("appsettings-Development.json", optional: false)
            .AddJsonFile("appsettings-Staging.json", optional: false)
            .AddEnvironmentVariables();
        Configuration = builder.Build();
    

更多详情请看这里:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration ...

【讨论】:

抱歉,这不是我的问题。例如,我需要将appsettings-shared.json 包含在appsettings-Development.jsonappsettings-Staging.json 您可以将这些共享设置保存在单独的文件中并在启动时加载它吗?这样您就不必将这些设置包含在其他设置中,因为您始终可以使用它们。【参考方案2】:

如果您希望在项目解决方案文件夹之外添加一个文件,即“另一个文件”,我通过设置 .SetBasePath("to any path where the settings file is") 使其工作,如下所示:

任何类名.cs 文件:

using Microsoft.Extensions.Configuration;
namespace your-name

    static class ConfigurationManager
    
        public static IConfiguration AppSetting  get; 
        static ConfigurationManager()
        
            AppSetting = new ConfigurationBuilder()
                    .SetBasePath("C:/Users/Name/Documents/AnotherSettings/") //instead of .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("appsettings.json")
                    .Build();
        
    

希望这会有所帮助。

【讨论】:

以上是关于为 ASP.NET Core 配置引用 appsettings.json 中的另一个 json 文件的主要内容,如果未能解决你的问题,请参考以下文章

为 ASP.NET Core 配置引用 appsettings.json 中的另一个 json 文件

ASP.Net Core 2.0 - 引用“Microsoft.NET.Sdk.Web”且“PreserveCompilationContext”属性未设置为 false

ASP.NET Core学习——7

ASP.NET CORE读取appsettings.json的配置

ASP.NET Core 类库中取读配置文件 appsettings.json

C# 8.0 可空(Nullable)给ASP.NET Core带来的坑