首页 > 其他分享 >类项目中的配置文件app.config在打包安装后的信息获取的问题

类项目中的配置文件app.config在打包安装后的信息获取的问题

时间:2022-12-05 10:35:25浏览次数:41  
标签:assembly 读取 配置文件 app dll test config


在一个项目中碰到这样的一个问题,做一个WORD插件,功能在类库项目中实现了,配置信息存在类库项目的配置文件app.config中,在进行打包后,获取的配置文件中的DocType节点信息时,使用以下方法  ConfigurationManager.AppSettings["DocType"]获取的值总是获取不到,跟踪调试发现值为null,上网看到类库被应用以后,ConfigurationManager.AppSettings访问的是应用程序的配置文件而不是类库所用的配置文件了,所以只有改变策略,把app.config文件也打包到安装文件中,安装后,在安装路径中找到这个文件并进行读取相应的信息,具体的实现方法如下
(.net环境下的C#代码)

//获取文件安装的路径
Assembly SampleAssembly = Assembly.GetExecutingAssembly();
string FilePath = Path.GetDirectoryName(SampleAssembly.CodeBase.Substring(8)) + "//App.config";
//解析配置文件获取对应的值
XmlDocument xDoc = new XmlDocument();
xDoc.Load(FilePath);
string DocType = xDoc.SelectSingleNode(@"/configuration/appSettings/add[@key='DocType']").Attributes["value"].Value;DocType 就是要获取的值了。

 

​​一种强行指定dll assembly读取其相应*.dll.config配置文件的方法(又名:如何创建.net 的DCOM)​​



      一般来说,.net 的exe assemly会存在一个对应的*.exe.config配置文件。当需要读取配置信息的时候,可以直接通过ConfigurationManager.AppSettings[index]来读取*.exe.config中的键值,但很少存在dll assembly需要config file的情况。假如当前dll assembly名为test.dll,如果在test.dll中调用ConfigurationManager来读取test.dll.config,那么是无法成功的!

      当然,在dll assembly中要读取其*.dll.config这种需求非常少见。但是确要读取的话,可以采取以下方式,即强行制定其dll assembly的路径。

      以下代码演示的是:编写一个.net dll并将其发布为一个regasm test.dll /codebase /tlb将其发布为一个DCOM, 然后通过asp页面来调用 。其中在test.dll中的公布的方法HelloWorld()需要读取其test.dll.config中的key value.  

dll assembly代码如下:

C# version:


标签:assembly,读取,配置文件,app,dll,test,config
From: https://blog.51cto.com/u_11295556/5911470

相关文章