Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Dotnet Core默认使用哪个appsettings.json文件作为环境或父文件?_C#_.net_Asp.net Core - Fatal编程技术网

C# Dotnet Core默认使用哪个appsettings.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"

是什么规定了.net核心clr/运行时使用的.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中的最后一个配置源。换句话说,稍后添加的配置源将覆盖先前添加的配置源