.NET Core类库中读取配置文件
最近在开发基于.NET Core的NuGet包,遇到一个问题:
.NET Core中已经没有ConfigurationManager
类,在类库中无法像.NET Framework那样读取App.config
或Web.config
(.NET Core中是appsetings.json)文件中的数据。
但,我们可以自己写少量代码来实现在类库中读取配置文件信息。
思路:
先在当前目录下寻找appsettings.json
文件
- 若存在,则读取改文件中的配置信息
- 不存在,则到根目录中寻找
appsettings.json
文件
具体做法如下:
使用NuGet安装
Microsoft.Extensions.Configuration.Json
包实现代码
public static class ConfigHelper
{
private static IConfiguration _configuration; static ConfigHelper()
{
//在当前目录或者根目录中寻找appsettings.json文件
var fileName = "appsettings.json"; var directory = AppContext.BaseDirectory;
directory = directory.Replace("\\", "/"); var filePath = $"{directory}/{fileName}";
if (!File.Exists(filePath))
{
var length = directory.IndexOf("/bin");
filePath = $"{directory.Substring(0, length)}/{fileName}";
} var builder = new ConfigurationBuilder()
.AddJsonFile(filePath, false, true); _configuration = builder.Build();
} public static string GetSectionValue(string key)
{
return _configuration.GetSection(key).Value;
}
}
测试
在根目录下或当前目录下添加appsetting.json
文件,并添加节点:
{
"key": "value"
}
测试代码如下:
public class ConfigHelperTest
{
[Fact]
public void GetSectionValueTest()
{
var value = ConfigHelper.GetSectionValue("key");
Assert.Equal(value, "value");
}
}
测试通过:
顺道安利下一款用于.NET开发的跨平台IDE——Rider,以上代码均在Rider中编写。
这是NuGet包项目地址:https://github.com/CwjXFH/WJChiLibraries,希望大家多多指点。
相关阅读
.NET Core类库中读取配置文件的更多相关文章
- .NET Core在类库中读取配置文件appsettings.json
在.NET Framework框架时代我们的应用配置内容一般都是写在Web.config或者App.config文件中,读取这两个配置文件只需要引用System.Configuration程序集,分别 ...
- .NET Core 类库中读取appsettings.json
{ "Logging": { "IncludeScopes": false, "LogLevel": { "Default&quo ...
- ASP.NET Core实现类库项目读取配置文件
前言 之前继续在学习多线程方面的知识,忽然这两天看到博问中有个园友问到如何在.net core类库中读取配置文件,当时一下蒙了,这个提的多好,我居然不知道,于是这两天了解了相关内容才有此篇博客的出现, ...
- .Net core 在类库中获取配置文件Appsettings中的值
大多数情况,我们开发的程序中都含有很多个类库和文件夹,有时候,我们会遇到程序中的类库需要获取配置文件的信息的情况. 像dapper 中需要使用连接字符串的时候,那么我们一直从主程序中传值这是个不好的方 ...
- .net core中读取配置文件
1)先看丑陋的方法 读取 appsettings.json 然后在 Startup 的 ConfigureServices() 方法中进行注入: public IConfigurationRoot ...
- 在.NET Core类库中使用EF Core迁移数据库到SQL Server
前言 如果大家刚使用EntityFramework Core作为ORM框架的话,想必都会遇到数据库迁移的一些问题. 起初我是在ASP.NET Core的Web项目中进行的,但后来发现放在此处并不是很合 ...
- .net core 2.0 读取配置文件
1.引用Microsoft.Extensions.Configuration2.在Startup中注入服务 public static IConfiguration Configuration { g ...
- ASP.NET Core系列:读取配置文件
1. 控制台应用 新建一个控制台应用,添加两个Package: Install-Package Microsoft.Extensions.Configuration Install-Package M ...
- 在ASP.NET 5中读取配置文件
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 在ASP.NET 5中摒弃了之前配置文件的基础结构,引入了一个全新配置文件系统.今天推荐的文 ...
随机推荐
- 行人检测(Pedestrian Detection)资源
一.论文 综述类的文章 [1]P.Dollar, C. Wojek,B. Schiele, et al. Pedestrian detection: an evaluation of the stat ...
- python操作excel及json
有一个存着学生成绩的文件:stuscore.txt,里面存的是json串,json串读起来特别不直观,需要你写代码把它都写到excel中,并计算出总分和平均分,json格式如下: { ":[ ...
- cesiumjs
官网 https://cesium.com/ https://cesiumjs.org/Cesium/ 论坛 http://cesium.coinidea.com/ 中文网 http://cesium ...
- day02 基本数据类型与运算符
day02 1.基本数据类型 2.算术运算符 +,-,*,/,%,++,-- 3.赋值运算符 =,+=,-=,*=,/=,%= 4.关系运算符 +=,-=,*=,/=,%= 结果是boolean类型 ...
- 桶排序和计数排序的理解实现和比较(Java)
比较和非比较的区别 常见的快速排序.归并排序.堆排序.冒泡排序等属于比较排序.在排序的最终结果里,元素之间的次序依赖于它们之间的比较.每个数都必须和其他数进行比较,才能确定自己的位置.比较排序的优势是 ...
- 跨站请求伪造(CSRF攻击)理解
一 概念 你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求.CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的 ...
- Service Fabric学习-从helloworld开始(无状态服务)
原先做服务器程序, 都是部署在xx云上, 也没理解云是个啥, 不就是个服务器(虚拟机)租赁商吗? 好吧, 其实这个是IaaS, 而接下来要学习的ServiceFabric(以下简称SF)是PaaS. ...
- How To Scan QRCode For UWP (2)
这篇随笔主要介绍照相预览功能,重要使用的是MediaCapture对象,MediaCapture对象还可以用来处理录音和录制视频,本文只讨论照相功能. 1:查找摄像头 后置摄像头优先,找不到后置摄像头 ...
- java接口应用—策略设计模式
策略模式:定义了一系列算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于使用它的客户应用而独立变化 strategy pattern:The Strategy Pattern defi ...
- maven更换源
1)在 /etc/maven/settings.xml 找到 <mirrors> </ mirrors>标签,在标签内部 添加内容如下: <mirror> ...