为 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
中分享一些配置。像 <appSettings file="">
这样的东西是否也可以使用 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.json
和appsettings-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读取appsettings.json的配置