我无法从其他应用程序读取配置文件

时间:2018-10-02 06:31:42

标签: c# configuration app-config

我一直在尝试所有可能的方法,但仍然不能。 在我的第一个应用程序中,我的配置文件将只有一个选项。 我的第一个应用程序只打算阅读它,仅此而已。

我的第二个应用程序将读取第一个应用程序的配置文件并可以进行更改。

这是我的app.config:

<?xml version="1.0"?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" 
                      type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >

            <section name="TCambio.Properties.Settings" 
                     type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
                     requirePermission="false" />

        </sectionGroup>
    </configSections>
    <appSettings>
      <add key="thoras" value="3"/>
    </appSettings>
</configuration>

要阅读按键音,在第二个应用程序中,请执行以下操作:

    ConfigurationFileMap fileMap = new ConfigurationFileMap(strfilenamepath);
    Configuration configuration = ConfigurationManager.OpenMappedMachineConfiguration(fileMap);
    try
    {
        string value = configuration.AppSettings.Settings["thoras"].Value;
        MessageBox.Show(value);
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error loading file. " + ex.Message);
    }

但是我遇到了以下错误:

  

无法将类型为“ System.Configuration.DefaultSection”的对象转换为类型为“ System.Configuration.AppSettingsSection”

1 个答案:

答案 0 :(得分:1)

您遇到的问题是由于在ConfigurationManager上使用了OpenMappedMachineConfiguration方法。用于访问计算机级别的.config文件,而不是用于特定应用程序的文件。

如果您将代码更新为:

var fileMap = new ExeConfigurationFileMap
{
    ExeConfigFilename = strfilenamepath
};
var configuration = ConfigurationManager.OpenMappedExeConfiguration(
                        fileMap, ConfigurationUserLevel.None);

因此,您改为访问应用程序的配置,应该发现对MessageBox.Show的调用现在将成功并显示数字'3'。