我有一个包含多个配置文件的项目,我需要能够读取特定的配置文件(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
{
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
任何帮助是极大的赞赏