我有一个项目与多个配置文件,我需要能够读取一个特定的配置文件(MyTest.exe.config
).
文件看起来像这样:
<appSettings>
<add key="Setting1" value="1.1.1.1"/>
<add key="Setting2" value="34567"/>
<add key="Setting3" value="blue"/>
<add key="Setting4" value="plastic"/>
</appSettings>
代码读它看起来像这样:
try
{
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = "MyTest.exe.config";
Configuration configFile = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
var appSettings = configFile.AppSettings.Settings;
if (appSettings.Count == 0)
{
Console.WriteLine("AppSettings is empty.");
}
else
{
foreach (var key in appSettings.AllKeys)
{
Console.WriteLine("Key: {0} Value: {1}", key, appSettings[key].ToString());
}
}
}
catch (ConfigurationErrorsException)
{
Console.WriteLine("Error reading app settings");
}
但我只得到密钥没有值
输出:
Key: Setting1 Value: System.Configuration.KeyValueConfigurationElement
Key: Setting2 Value: System.Configuration.KeyValueConfigurationElement
Key: Setting3 Value: System.Configuration.KeyValueConfigurationElement
Key: Setting4 Value: System.Configuration.KeyValueConfigurationElement
我也try 一次获得一个值:
try
{
String key = "Setting1";
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = "MyTest.exe.config";
Configuration configFile = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
var appSettings = configFile.AppSettings.Settings;
string result = appSettings[key].ToString();
Console.WriteLine(result);
}
catch (ConfigurationErrorsException)
{
Console.WriteLine("Error reading app settings");
}
但同样的事情—输出是:
System.Configuration.KeyValueConfigurationElement
任何帮助都是非常感激的.