C# Dotnet Core默认使用哪个appsettings.json文件作为环境或父文件?
是什么规定了.net核心clr/运行时使用的.json文件?例如,如果两者都有一个连接字符串。我到处都找不到答案C# Dotnet Core默认使用哪个appsettings.json文件作为环境或父文件?,c#,.net,asp.net-core,C#,.net,Asp.net Core,是什么规定了.net核心clr/运行时使用的.json文件?例如,如果两者都有一个连接字符串。我到处都找不到答案 var env = builderContext.HostingEnvironment; config.AddJsonFile("appsettings.json", optional: false) .AddJsonFile($"appsettings.{env.EnvironmentName}.json"
var env = builderContext.HostingEnvironment;
config.AddJsonFile("appsettings.json", optional: false)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
谢谢 没有“默认”订单。NET核心将使用代码中指定的文件。appsettings.json
或json配置提供程序也没有什么特别之处。就.NETCore而言,他们只是供应商
该代码规定:
appsettings.json
文件。如果它不存在,应用程序将失败$”appsettings.{env.EnvironmentName}.json“
也没有特殊意义。它是一个字符串插值表达式,用env.EnvironmentName
属性的值替换{env.EnvironmentName}
占位符
方法调用错误指定顺序,后面的文件或提供程序将覆盖前面的文件或提供程序
您可以在JSON文件之后添加命令行或EF核心提供程序,以使用存储在数据库中或在命令行中指定的值覆盖它们
文档和教程(如或)中对此进行了解释,但它与完整框架的工作方式大不相同,需要一些时间才能习惯。配置是按源代码顺序加载的。换句话说,您指定的每种配置类型都是按照您在
Startup.cs
或其他文件中添加的顺序加载的。这里,由于appsettings.json
是在appsettings.{env.EnvironmentName}.json
之前指定的,因此将首先加载它,然后是特定于环境的版本(如果存在)
无论您的配置源是什么,所有内容都会出现在ConfigurationRoot
字典中。如果多个配置源指定相同的密钥,则wins中的最后一个配置源。换句话说,稍后添加的配置源将覆盖先前添加的配置源