无法从DLL读取App.config

时间:2018-07-19 15:52:38

标签: c# app-config

我已将包含一些AppSettings的App.config文件从同一解决方案的EXE项目移到DLL项目中。之后,我注意到使用配置管理器时,只会得到空值。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
    <add key="Path1" value="C:\ProgramData\Resources\file2.xml" />
    <add key="Path2" value="C:\ProgramData\Development\file1.xml" />
</appSettings>
</configuration>

/* Reading */
public string Path1=> ConfigurationManager.AppSettings["Path1"];
public string Path2=> ConfigurationManager.AppSettings["Path2"];

如果我将App.config移回EXE项目,则可以使用配置管理器读取所有值。

所以,我的问题是,如果我的解决方案中只有DLL(COM)项目,而我对EXE(由第三方开发)项目没有控制权,那么如何使用App.config文件管理设置?

2 个答案:

答案 0 :(得分:3)

配置文件不会编译到dll中。

除非您输入特殊代码以查找其他地方,否则该应用程序将使用解决方案启动项目中的app.config。

这是设计使您可以更改配置而不必仅因为设置更改而重新编译。

答案 1 :(得分:1)

您不应将app.config用于类库中的任何设置。这样做是不好的做法,这就是即使Microsoft也不在类库中提供app.config的原因。

类库所需的任何值都应使用参数从应用程序传递给类。例如,在您的情况下,文件路径可以作为参数传递给类方法或构造函数等。

但是如果您仍然想访问,请尝试以下选项
1.将对System.Configuration.dll的引用添加到您的类库中,并在using块中使用System.Configuration进行添加
2。编写代码以将app.config文件读取为常规xml文件。有点像这样。

delete