我运行了许多相互通信的应用程序,但这些应用程序都没有自己的用户界面。我有一个系统控制台应用程序,它充当系统的用户界面(即所有相互通信的应用程序集)。
我希望能够使用系统控制台来读取和修改每个非 gui 应用程序的配置。
每个应用都有一个使用 Visual Studio 设置 GUI 创建的 app.config 文件。这些设置都在应用程序范围内,这导致 app.config 文件看起来有点像这样:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="ExternalConfigReceiver.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<ExternalConfigReceiver.Properties.Settings>
<setting name="Conf1" serializeAs="String">
<value>3</value>
</setting>
<setting name="Conf2" serializeAs="String">
<value>4</value>
</setting>
</ExternalConfigReceiver.Properties.Settings>
</applicationSettings>
我尝试使用以下代码来读取配置设置:
System.Configuration.ExeConfigurationFileMap fileMap = new System.Configuration.ExeConfigurationFileMap();
fileMap.ExeConfigFilename = "PATH_TO_THE_FOLDER\\app.config";
System.Configuration.Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(fileMap, System.Configuration.ConfigurationUserLevel.None);
someVariable = config.AppSettings.Settings["Conf1"];
someVariable2 = config.AppSettings.Settings["Conf2"];
但是,在仔细检查 config.AppSettings 对象后,我发现它不包含任何设置。
我究竟做错了什么?我是否使用错误的方法来读取配置文件?这种方法最适合不同类型的配置文件吗?