从 .net 标准库中读取 appsettings.json
Posted
技术标签:
【中文标题】从 .net 标准库中读取 appsettings.json【英文标题】:Reading appsettings.json from .net standard library 【发布时间】:2018-11-06 20:04:38 【问题描述】:我已经使用 .NET Core Framework 启动了一个新的 RESTful 项目。
我将我的解决方案分为两部分:框架(一组 .NET 标准库)和 Web(RESTful 项目)。
使用 Framework 文件夹,我为进一步的 Web 项目提供了一些库,并且在其中之一中,我想提供一个具有通用方法 T GetAppSetting<T>(string Key)
的配置类。
我的问题是:如何访问 .NET Standard 中的 AppSettings.json 文件?
我找到了很多关于读取此文件的示例,但所有这些示例都将文件读取到 Web 项目中,而没有人将其写入外部库中。我需要它为 Others 项目提供可重用的代码。
【问题讨论】:
别再这样了。不要尝试从 库 本身读取配置。配置类是应该注入的依赖项。您的程序集应该定义配置类和包含配置设置代码以将它们与设置相匹配(例如 configurationBuilder.Configure正如 cmets 中已经提到的,你真的不应该这样做。 Inject a configured IOptions<MyOptions>
using dependency injection instead.
但是,您仍然可以加载 json 文件作为配置:
IConfiguration configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory()) // Directory where the json files are located
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.Build();
// Use configuration as in every web project
var myOptions = configuration.GetSection("MyOptions").Get<MyOptions>();
确保引用Microsoft.Extensions.Configuration
和Microsoft.Extensions.Configuration.Json
包。更多配置选项see the documentation。
【讨论】:
很好的解决方案,谢谢!但是我明白为什么我不应该这样做......:D 为了构建此代码,我必须添加 3 个 nuget 包:Microsoft.Extensions.Configuration、Microsoft.Extensions.Configuration.Binder、Microsoft.Extensions.Configuration.Json以上是关于从 .net 标准库中读取 appsettings.json的主要内容,如果未能解决你的问题,请参考以下文章
从 .NET Core 2 中的类中读取 appsettings.json
无法从 asp dot net 3.1 中的 appsettings.json 读取字符串数组
是否有任何标准方法可以从 .NET 4.6.1 中的 appSettings.config 文件加载数组