在.net2.0中Config文件的修改,读取已经相当方便了。很多朋友都没有注意,尽管config本身是XML的,可以解析XML。解决的方法是很多。但是.net2.0已经有一个现成的解决,我们为什么不用呢。至少在新项目上,没有必要再使用自己的读取方式。
读取Config文件,通常使用ConfigurationManager类。
public static Configuration OpenExeConfiguration(
	string exePath
)
public static Configuration OpenMappedExeConfiguration(
	ExeConfigurationFileMap fileMap,
	ConfigurationUserLevel userLevel
)

具体的不说了,直接看代码
ExeConfigurationFileMap file = new ExeConfigurationFileMap();
 file.ExeConfigFilename = "C:\\C.config";
//or  file.ExeConfigFilename = "C.config";C.config与当前执行的exe在同一目录下
//or  file.ExeConfigFilename = "Files/C.config";C.config与当前执行的exe在同一目录的Files文件夹下
 Configuration config = ConfigurationManager.OpenMappedExeConfiguration(file, ConfigurationUserLevel.None);
Console.WriteLine(config.ConnectionStrings.ConnectionStrings["CC"].ConnectionString);

C.config文件如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <connectionStrings>
        <clear/>
        <add name="CC" connectionString="Show Message OK"/>
    </connectionStrings>
</configuration>
代码很简单,但是很多朋友都使用其他的方法解决,总觉得没有必要

稍后推出config文件的修改

 

Posted on 2008-09-07 12:35 rosanshao 阅读(1744) 评论(8)  编辑 收藏 网摘

Feedback

#1楼   回复  引用  查看    

2008-09-07 12:45 by 熊掌      
对,.Net的类库中已经提供了很方便的方法来访问App.config内的数据了,自己写一个类等其他方式,我觉得有些浪费,1个人浪费1个小时,世界上这么多人,改浪费多大啊。

我那片东西,主要是想说明2个问题:
1、OpenExeConfiguration(string exePath)中,这个微软在MSDN中犯的错误,导致的容易被忽略的细节,同时对微软在MSDN上的错误感到很遗憾,这要是统计下,浪费的时间也是相当可观的啊....;(第二节)

2、采用CreateAppDomain的方式让dll能够使用ConfigurantionManager的GetSection或属性直接读取dll.config文件内的信息。(第四节)

#2楼[楼主]   回复  引用  查看    

2008-09-07 14:06 by rosanshao      
to 熊掌
1我没有看出OpenExeConfiguration在MSDN上有什么错误
2不使用CreateAppDomain同样方便的读取dll.config文件中的信息。你使用CreateAppDomain,真的没有必要

#3楼   回复  引用  查看    

2008-09-07 14:57 by zzticzh      
继续

#4楼   回复  引用  查看    

2008-09-08 09:16 by 戏水      
受教了, 支持作者 多分享经验。

#5楼   回复  引用  查看    

2008-09-08 09:27 by 熊掌      
@rosanshao
在微软的MSDN2008中是这样说的:
____________________________________________

语法

C#
public static Configuration OpenExeConfiguration(
string exePath
)


参数
exePath
类型:System..::.String

配置文件的路径。
配置文件位于可执行文件所在的目录。

在MSDN2005中是这样说的:
注意:此方法在 .NET Framework 2.0 版中是新增的。

将指定的客户端配置文件作为 Configuration 对象打开。

命名空间:System.Configuration
程序集:System.Configuration(在 system.configuration.dll 中)

语法

C#
public static Configuration OpenExeConfiguration (
string exePath
)

参数
exePath
与可执行文件关联的配置文件的路径。

返回值
一个 Configuration 对象。
_________________________________________________

注意到了没有,对参数exePath的说明,都是指:config的路径,而不是exe文件的路径,此外还没有说明,需要保证config对应的exe必须在同目录下。

我那篇blog要说的就是这2个细节,而不是要给出解决config文件加载的新方法,要不然我的标题也不会是“容易被忽略的细节”了。

这2个细节,我在文章已经用框框 醒目的标识出来了的,播主看文要注意重点哦...

#6楼   回复  引用  查看    

2008-09-08 10:51 by 亚历山大同志      
配置确实太复杂了,如果要实现自定义配置的话

#7楼   回复  引用  查看    

2008-09-14 22:37 by 吴波      
仔细看完,二位都没有错。
熊掌先生在纠正MSDN中的表述:string exePath描述为“配置文件的路径”是不精确的。差了一个".config"。
rosanshao先生从实用角度出发提出ConfigurationManager::OpenMappedExeConfiguration()可以较优雅地给出加载自定义路径下config文件的方法。
当然,CreateAppDomain()的方法意义就不大了。但作为一种探索,精神可嘉。

ps.个人觉得微软这块类库设计得不好,绕弯弯,让局外人容易走错路。记得李白写诗要让老婆婆听的懂才认为是好诗。

#8楼   回复  引用    

2008-11-05 10:08 by 老破[未注册用户]
给楼上:是杜甫不是李白吧!
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1286191




相关文章:

相关链接: