在类库程序集中,我在属性下添加了多个设置文件。
当我在设置文件中添加新条目时,默认值存储在根目录中的app.config中。 作为类库程序集,它的app.config未被使用。但是我想使用,所以我可以覆盖文件中的默认值。
我知道我可以将类库app.config的内容复制到exe的app.config中,但我不想采取手动保持文件同步的道路。
答案 0 :(得分:2)
您正在询问如何从与执行程序的配置文件分开的dll访问配置文件?这可能不是一个好主意,但您可以创建自己的ConfigurationManager版本。首先,创建一个类以从配置文件中检索设置(使用XmlDocument来解析配置文件):
public sealed class Settings
{
private readonly string settingsPath;
private XmlDocument doc;
private XmlDocument Doc
{
get
{
if (doc == null)
{
doc = new XmlDocument();
doc.Load(settingsPath);
}
return doc;
}
}
public string this[string name]
{
get
{
return GetSetting(name);
}
}
internal Settings()
{
settingsPath = @"\\path\to\app.config";
}
internal Settings(string settingsPath)
{
this.settingsPath = settingsPath;
}
public string GetSetting(string settingName)
{
return Doc.SelectSingleNode(string.Format("/configuration/settings/setting[@key='{0}']", settingName)).Attributes["value"].Value;
}
}
然后创建一个帮助类:
public class SettingsManager
{
private static Settings settings;
public static Settings Settings
{
get
{
if (settings == null)
{
settings = new Settings();
}
return settings;
}
}
}
现在您可以像使用控制台应用程序中的ConfigurationManager一样使用类库中的SettingsManager类:
SettingsManager.Settings["mysetting"]
以下是您的配置文件应该是什么样的
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<settings>
<setting key="mysetting" value="my value"></setting>
</settings>
</configuration>