如何从F#控制台应用程序写入appSettings?

时间:2012-09-27 06:58:33

标签: f# console-application configurationmanager

虽然这似乎是一个简单的问题,但我无法从F#控制台应用程序写入配置文件。我的最后一次尝试看起来像

let config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal)
// config.AppSettings.SectionInformation.AllowExeDefinition <-ConfigurationAllowExeDefinition.MachineToLocalUser
match self.FileName with
| Some name -> config.AppSettings.Settings.["FileName"].Value <- name
| None -> ()
config.Save(ConfigurationSaveMode.Modified)

我遇到了各种各样的错误。与此代码对应的那个是

  

System.NullReferenceException:未将对象引用设置为对象的实例。      在System.Configuration.ConfigurationElement.SetPropertyValue(ConfigurationProperty prop,Object value,Boolean ignoreLocks)...

F#中没有好的文档,我发现很难遵循C#/ VB文档。 有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您必须检查null并更新或相应添加。

这样的事情:

let config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal)
let settings = config.AppSettings.Settings
let set (s:KeyValueConfigurationCollection) key value = 
   match s.[key] with 
   | null -> s.Add(key,value)
   | x    -> x.Value <- value
match self.FileName with
| Some name -> set settings "Filename" name
| _         -> ()