我正在为另一个应用程序创建一个作为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配置文件中读取?对我来说,确切的位置尚不确定,应该从哪个位置读取哪个配置文件。
最佳答案
您可以尝试在调用应用程序中合并applicationsettings文件。这个SO线程很好地解释了它。
How to load a separate Application Settings file dynamically and merge with current settings?
如果您不想弄乱编辑调用的应用程序,则可以像执行操作一样使用Configuration类。这是另一个例子。当我需要通过COM调用WCF服务时,就使用了这种方法。
http://www.twisted-bits.com/2012/04/use-a-net-configuration-file-with-a-class-library-dll/
关于c# - 如何制作从library.dll.config中读取的DLL ApplicationSettings类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10392130/