如何在dll中刷新applicationSettings

时间:2010-01-20 10:24:07

标签: vb.net dll configuration

我可以强制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文件中更改它,它对返回值没有影响。

3 个答案:

答案 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