读取DLL的config文件内容

luonaise 2017-03-01 12:57:47
对于app.config里面的内容 一般都会选择用ConfigurationManager读取 但是好像只能读取本项目的config 现在我有一个项目引用了一个dll 而我想获取到dll的config的内容 我该怎么获取?dll是我自定义的,我尝试过在dll中定义一个string获取dll的config内容,但是项目引用dll之后,string 却还是指向本项目的config内容?
我能用什么办法取dll的config呢,不要告诉我直接读取dll.config........
...全文
566 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
luonaise 2017-03-06
  • 打赏
  • 举报
回复
各位大佬 能不能直面问题 不要总给一些取巧的思路
luonaise 2017-03-06
  • 打赏
  • 举报
回复
引用 9 楼 shingoscar 的回复:
config文件就摆在那里,自己读啊
我有这种需求 并不是说我就要都某个特定的dll 如果不是我自己建的dll怎么办 我到哪里去找config????
luonaise 2017-03-06
  • 打赏
  • 举报
回复
引用 10 楼 eit520 的回复:
Config文件,是读的EXE的那个,DLL那个整合到EXE那个config就ok了.DLL那个不需要了。
引用 10 楼 eit520 的回复:
Config文件,是读的EXE的那个,DLL那个整合到EXE那个config就ok了.DLL那个不需要了。
说过了 没有关联的exe
EIT王子 2017-03-06
  • 打赏
  • 举报
回复
没有那么麻烦吧。。就算只是XML也读出来来了啊。。也没有那么麻烦吧。。更何块,你指定一下就好了。。
  • 打赏
  • 举报
回复
报的错好像是权限问题,没有具体研究过,感觉内部就是个反序列化的操作,可能CLR加了些验证上去,防止篡改?总之只要有读权限就当xml解析吧
  • 打赏
  • 举报
回复
如果那3个都不行,就直接当xml读吧,xpath读起来很方便高效
EIT王子 2017-03-03
  • 打赏
  • 举报
回复
Config文件,是读的EXE的那个,DLL那个整合到EXE那个config就ok了.DLL那个不需要了。
Poopaye 2017-03-03
  • 打赏
  • 举报
回复
config文件就摆在那里,自己读啊
luonaise 2017-03-03
  • 打赏
  • 举报
回复
引用 3 楼 xuggzu 的回复:
使用Assembly.GetExecutingAssembly().CodeBase获取路径。
获取路径?获取什么路径?我是要获取config里面的内容啊
luonaise 2017-03-03
  • 打赏
  • 举报
回复
引用 6 楼 dongxinxi 的回复:
看第二个参数ConfigurationUserLevel https://msdn.microsoft.com/library/System.Configuration.ConfigurationUserLevel
3个都试过 不行
  • 打赏
  • 举报
回复
luonaise 2017-03-03
  • 打赏
  • 举报
回复
引用 楼主 qq_16813645 的回复:
对于app.config里面的内容 一般都会选择用ConfigurationManager读取 但是好像只能读取本项目的config 现在我有一个项目引用了一个dll 而我想获取到dll的config的内容 我该怎么获取?dll是我自定义的,我尝试过在dll中定义一个string获取dll的config内容,但是项目引用dll之后,string 却还是指向本项目的config内容? 我能用什么办法取dll的config呢,不要告诉我直接读取dll.config........
我就在class中定义了一个string 然后string=ConfigurationManager.AppSettings["TestDll1"];了 然后项目中实例化class 然后就class.string...... 得到结果为空 而且如果我在项目的config中添加appsetting key为”TestDll1“ 返回的是项目中的内容 而不是dll中的
luonaise 2017-03-03
  • 打赏
  • 举报
回复
引用 2 楼 dongxinxi 的回复:
读取当前程序配置 var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 读取第三方程序,并且有config关联的exe用 var config = ConfigurationManager.OpenExeConfiguration(Exe完整路径) 读取第三方没有关联的exe var fileMap = new ExeConfigurationFileMap() { ExeConfigFilename = configPath }; var config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
我没有exe关联 所以使用了你的第三段代码 这是我的代码
string configPath = "TestDll.dll.config";
            ExeConfigurationFileMap configFileMap =
                new ExeConfigurationFileMap();
            configFileMap.ExeConfigFilename = configPath;
            var config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);
编译无误 但是我想取一个string验证config的正确性 添加了如下一句代码 string str =config.AppSettings["TestDll1"]; 但是编译阶段就报错 ,被告知权限不够?先面试报错内容 'System.Configuration.ConfigurationElement.this[System.Configuration.ConfigurationProperty]' is inaccessible due to its protection level 请问我该怎么解决??
xuggzu 2017-03-01
  • 打赏
  • 举报
回复
使用Assembly.GetExecutingAssembly().CodeBase获取路径。
  • 打赏
  • 举报
回复
读取当前程序配置 var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 读取第三方程序,并且有config关联的exe用 var config = ConfigurationManager.OpenExeConfiguration(Exe完整路径) 读取第三方没有关联的exe var fileMap = new ExeConfigurationFileMap() { ExeConfigFilename = configPath }; var config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
  • 打赏
  • 举报
回复
dll如果自定义了config,一般就会有对应的config读取模块,你查下那个模块就行,否则dll自己怎么读取

110,500

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧