机器级别和用户级别上是否存在`appsettings.json`配置文件?

3

我知道,对于桌面应用程序而言,旧的*.config机制共有四个层次的配置文件:

  • machine.config - 存储在 .net 安装目录中
  • app.config - 存储在应用程序目录中
  • user.config - 存储在用户漫游目录中
  • user.config - 存储在用户本地目录中

在使用JSON文件的新系统中,这些文件的等效物是什么?

1个回答

3
你可以使用 ConfigurationBuilder 来进行所有这些细节的设置,通过按正确顺序添加已知的配置文件,它具有灵活性以及更多功能。缺点是它需要写得略微冗长。不过,如果需要,可以编写扩展方法来简化它: 注意:如果你正在使用asp.netcore,那么在配置方法(例如ConfigureAppConfiguration)中,你可以获得访问 IConfigurationRoot,因此不需要像下面所示一样实例化新的 ConfigurationBuilder
var configuration = new ConfigurationBuilder()
   .SetBasePath(...)
   // some machine config
   .AddJsonFile(@"<The path to your globalSettings>\appsettings.json", optional: true) 
   // Your main app settings
   .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
   // environment specific
   .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
   // Machine specific
   .AddJsonFile($"appsettings.{Environment.MachineName}.json", optional: true)
    // user specific
   .AddJsonFile(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),"Your App Name","appsettings.json"), optional: true)
   .AddEnvironmentVariables()
   ...
免责声明:以下内容并非意在呈现最佳代码,而是一篇致敬之作。您需要进行适合自己和环境的操作。

更详细的解释:

IConfigurationRoot 只是一个提供程序和来源的集合。提供程序会折叠成键值对的集合。每个后续添加的提供程序都有能力覆盖前面提供程序的值(如果有),这比旧的 app.config/web.config 范例好了约1000倍。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接