【Config】类库读取自己的配置文件,配置文件的扩展
我们在项目中一般都是使用统一的项目文件配置,所有的配置和自定义的字段都写在一个web.config或者App.config文件中。一般平时我们也没有发现问题,确实这么写没有问题,但是就是如果写的多了就看着很臃肿。
并且假如你其他地方不是主项目的配置也写在这里,多了是不是很乱,有时候自己都不知道这个是配置的那个东西了。这不我在搭建自己的框架做日志写入的时候就发现这个问题,我就想因为我日志写入我是单独作为类库存在的,所以我不一定非要写在web.config中啊。我直接写在我类库下的配置文件就可以啊。想法不错说干就干,经过一下午的鼓捣吧(其实也弄别的拉。)终于封装成了一个方法其实很简单,主要是老是报路径错误鼓捣的时间。原本我是想用程序集的路径(Assembly.Location或者assembly.CodeBase)不过研究半天发现他们给的路径都不好使,也不知道为什么(回头再研究先解决眼下的问题)。反正是一个给返回C盘的路径一个是有多于字段。最后我还是用AppDomain这个代替吧,先用着发现不行在撤。嘻嘻嘻
最后大概就是这么一个结构:

类就是config的帮助扩展类,然后读取到的就是当前下的app.config。
获取当前类库的文件配置
方法代码:
#region 1.获取当前类库的文件配置
public static Configuration InitLogConfig()
{
string baesePath = AppDomain.CurrentDomain.RelativeSearchPath;
string fullName = Path.GetFileName(Assembly.GetCallingAssembly().Location);
string path = string.Format(@"{0}\{1}.config", baesePath, fullName);
if (File.Exists(path) == false)
{
string msg = string.Format("{0}路径下的文件未找到 ", path);
throw new FileNotFoundException(msg);
}
try
{
ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
configFile.ExeConfigFilename = path;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFile, ConfigurationUserLevel.None);
return config;
}
catch (Exception ex) { throw new Exception(ex.Message);
}
}
#endregion
config我现在就随便写了一个 appSettings来给大家演示一下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="LogPath" value="E:\"/>
</appSettings>
</configuration>
下面就是为了演示写的调用:

然后是运行结果:我们可以看到配置文件是E盘,所有我们读取到的路径也是E盘


走到这里就说明方法成功了。我很开心哈哈。想法实现了。
注意:这个扩展是那个方法调用所在的项目或者类库的配置文件不是不变的。
获取当前指定位置文件配置
写完这个之后我又想到一个想法那就是指定读取项目中类库的配置文件,有了第一个的基础,这个还不是手到擒来。所有代码就改成这样了:
#region 2.获取当前指定位置文件配置
public static Configuration InitLogConfig2(string fullName)
{
string baesePath = AppDomain.CurrentDomain.RelativeSearchPath; string path = string.Format(@"{0}\{1}.dll.config", baesePath, fullName);
if (File.Exists(path) == false)
{
string msg = string.Format("{0}路径下的文件未找到 ", path);
throw new FileNotFoundException(msg);
}
try
{
ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
configFile.ExeConfigFilename = path;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFile, ConfigurationUserLevel.None);
return config;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
} }
为了演示我就这样子写一下吧,不演示一下在不明白区别:

运行起来效果:


可以看到一个是类库的E盘一个是我主文件写的D盘,说明成功了。
【Config】类库读取自己的配置文件,配置文件的扩展的更多相关文章
- Asp.net Core 和类库读取配置文件信息
Asp.net Core 和类库读取配置文件信息 看干货请移步至.net core 读取配置文件公共类 首先开一个脑洞,Asp.net core 被使用这么长时间了,但是关于配置文件(json)的读取 ...
- 【c++基础】C++编写Config类读取配置文件
前言 系统程序一般需要读取参数文件,看到一个很好的Config类记录在此. 头文件Config.h //Config.h //re: https://blog.csdn.net/David_xtd/a ...
- Spring读取外部的资源配置文件—@PropertySource和@Value实现资源文件配置
通过@PropertySource可以指定读取的配置文件,通过@Value注解获取值: @PropertySource注解主要是让Spring的Environment接口读取属性配置文件用的,标识在@ ...
- Setup Factory 读取安装包的配置文件
result = INIFile.GetValue(SessionVar.Expand("%SourceFolder%\\set.ini"), "set", & ...
- 仿联想商城laravel实战---6、自建配置文件和缓存(如何读取自己创建的配置文件的信息)
仿联想商城laravel实战---6.自建配置文件和缓存(如何读取自己创建的配置文件的信息) 一.总结 一句话总结: config()及相应的方法 1.前端插件选择好了,后端开发超级省力? 比如多图上 ...
- SpringBoot学习(三)-->Spring的Java配置方式之读取外部的资源配置文件并配置数据库连接池
三.读取外部的资源配置文件并配置数据库连接池 1.读取外部的资源配置文件 通过@PropertySource可以指定读取的配置文件,通过@Value注解获取值,具体用法: @Configuration ...
- 无法读取例程 &ROUTINE 中配置文件选项 FND_DEVELOPER_MODE
问题描述:OM>发运>事务处理,进入此界面,FORM出现报错信息:无法读取例程 &ROUTINE 中配置文件选项 FND_DEVELOPER_MODE 解决办法:在系统管理员下,设 ...
- MyBatis XML 配置文件 properties 元素扩展
在分析 MyBatis XML 配置文件 properties 元素时提到了三种配置方式,其中 property 子元素 和 properties 文件都比较容易理解,但是为什么还要提供一种代码参数传 ...
- springboot用@Autowired和@PostConstruct注解把config配置读取到bean变成静态方法
springboot用@Autowired和@PostConstruct注解把config配置读取到bean变成静态方法 @SpringBootApplication public class Sen ...
随机推荐
- DOM-基本概念及使用
1.获取元素的方式总结 1.根据 id 的属性的值获取元素,返回值是一个元素对象 document.getElementById("id属性的值"); 2.根据标签名获取元素,返回 ...
- 封装一个 员工类 使用preparedStatement 查询数据 (1)
创建员工类 自动生成get set 方法 package cn.hph; public class emp { //定义表中的属性 private int id; private String en ...
- js-day05-JSON-jQuery初体验
JSON数据格式 JSON(JavaScript Object Notation)一种简单的数据格式,比xml更轻巧.易于人阅读和编写,同时也易于机器解析和生成(网络传输速度快)JSON是JavaSc ...
- Golang Go Go Go part1:安装及运行
golang 知识图谱 https://www.processon.com/view/link/5a9ba4c8e4b0a9d22eb3bdf0 一.安装 最新版本安装包地址:https://gola ...
- 深港澳大湾区(深圳).NET技术交流会圆满成功
2018年7月7日一场以.NET Core微服务和机器学习为主题的交流会成功在深圳职业技术学院落下帷幕.这次活动在短短的一周时间内,报名人数超过了170人,除了一些同学临时有事,基本都到现场了,特别感 ...
- .Net深入实战系列—JSON序列化那点事儿
序 当前主流的序列化JSON字符串主要有两种方式:JavaScriptSerializer及Json.net(Nuget标识:Newtonsoft.Json).JavaScriptSerializer ...
- 企业IT管理员IE11升级指南【8】—— Win7 IE8和Win7 IE11对比
企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...
- 作为小白,如何学习Web前端开发?
作为一个已经写码这么多年的人,我不会告诉你我最初的时候是自学的,因为刚开始自己学真的特别无聊枯燥,实在学不下去,所以就自己报了一个培训(上元教育)的地方,毕竟是交了钱的,本着不服气的精神,硬是把自己生 ...
- 【二代示波器教程】第13章 RTX操作系统版本二代示波器实现
第13章 RTX操作系统版本二代示波器实现 本章教程为大家讲解RTX操作系统版本的二代示波器实现.主要讲解RTOS设计框架,即各个任务实现的功能,任务间的通信方案选择,任务栈,系统栈以及全局 ...
- Kali学习笔记44:SQLMAP
SQLMAP漏洞检测技术: 1.基于布尔的盲注检测:' and 1=1 'and 1=2等 2.基于时间的盲注检测:' and (select * from (select(sleep(20))) ...