我正在为另一个应用程序创建一个插件作为 DLL,它需要具有无需重新编译 DLL 即可配置的设置。我通过 Visual Studio 创建了一个设置类,就像我通常对应用程序项目所做的那样。当我构建我的项目时,会创建一个 libraryname.dll.config 文件并将其直接复制到输出中。
但是,正如其他人可能已经发现并写过的那样,这个文件从未被使用过。相反,如果我想修改这些 DLL 设置,我需要将设置合并到使用 DLL 的任何应用程序的设置文件中。
我遇到的问题是调用应用程序不是我的应用程序,所以我宁愿插件的配置与插件的其余文件一起使用。
过去,我曾经System.Configuration.ConfigurationManager.OpenExeConfiguration()
像这样读取 DLL 的设置文件。
public static string GetSettingValue(string key)
{
string assemblyPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
var config = ConfigurationManager.OpenExeConfiguration(assemblyPath);
var keyVal = config.AppSettings.Settings[key]
return keyVal.Value;
}
将从这样的设置文件中读取
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="URL" value="http://www.acme.com" />
<add key="EnableAdmin" value="False" />
</appSettings>
</configuration>
但是,我真的很喜欢由 Visual Studio 创建的较新类型的安全 ApplicationSettings 类,而不是使用<appSettings>
只能存储字符串的类。
所以我想知道是否有某种方法可以覆盖 Visual Studio 创建的 ApplicationSettings 类中的一两个方法,以使其默认从 DLL 配置文件中读取?我不太清楚应该在哪里确定应该读取哪个配置文件。