2011-06-22 44 views
10

我添加了一个文件app.config到一个C#单声道项目。Monodevelop是否支持配置文件?

项目里面我用

foreach (string key in ConfigurationManager.AppSettings) 
{ 
string value = ConfigurationManager.AppSettings[key]; 
Console.WriteLine("Key: {0}, Value: {1}", key, value); 
} 

配置文件看起来像这样

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<appSettings> 
<add key="Key1" value="Kevin" /> 
<add key="Key2" value="150" /> 
<add key="Key3" value="Rice" /> 
</appSettings> 
</configuration> 

未检测到按键。我怎样才能读取配置值?

+0

您应该使用ConfigurationManager编写密钥,然后使用ConfigurationManager将其读回。如果成功,请查找它生成的XML文件。 –

+0

@robert - 但我只需要从文件中读取配置值 – danidacar

+0

如果我建议成功,您将知道XML文件应该放在哪里,以及它应该如何正确格式化。一旦你知道,你可以手动创建文件。 –

回答

6

这个答案来得非常晚,但对于任何遇到此问题的人来说,是的,mono确实支持配置文件。您可以使用上面讨论的ConfigurationManager方法,或者甚至可以在app.config文件中创建自己的自定义设置部分,并通过派生自ApplicationSettingsBase的类对其进行处理。在我看来,这是处理app.config文件的更自然的方式,因为您使用类和强类型属性,而不是使用ConfigurationManager执行的方式访问数组中的字符串。为应用程序设置创建一个类也非常简单。这里是MSDN页面,解释如何创建类:http://msdn.microsoft.com/en-us/library/system.configuration.applicationsettingsbase.aspx

唯一需要注意的是,.NET框架允许UserScopedSettings在app.config文件中定义(以提供默认值),但如果你这样做,Mono会抛出异常。解决方法是将UserScopedSettings保留在app.config文件中,并仅为代码中的属性定义默认值。这不是一个完美的解决方法,因为它不能改变代码之外的默认值,但在大多数情况下这是足够的。