我可以强制dll重新加载它的配置吗?
在我的VB库中,我正在使用此配置:
<applicationSettings>
<ComWrapper.My.MySettings>
<setting name="MySetting" serializeAs="String">
<value>This is an entry</value>
</setting>
</applicationSettings>
从代码中访问“MySetting”值没有问题:
Public Function GetSetting() As String
Return ComWrapper.My.MySettings.Default.MySetting
End Function
但看起来像“这是一个条目”的值嵌入到dll的代码中。如果我在app.config或ComWrapper.dll.config文件中更改它,它对返回值没有影响。
答案 0 :(得分:2)
配置值取自执行进程配置。 意味着,如果您有ComWrapper.dll及其配置文件,在YourProcess.exe的上下文中运行,配置设置将取自YourProcess.exe.config。
因此,您需要将ComWrapper设置插入YourProcess.exe.config文件,否则默认生成的值(您可以在Settings.Designer文件中找到它)。
答案 1 :(得分:0)
我自己找到了解决方案
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", filename)
这对我来说是安全的,因为我用Excel调用我的lib,所以我不会覆盖外部配置值。
答案 2 :(得分:0)
我已经解决了我的问题:
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = Assembly.GetExecutingAssembly().Location + ".config";
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
string value = config.AppSettings.Settings["X"].Value