虽然这似乎是一个简单的问题,但我无法从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文档。 有什么建议吗?
答案 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
| _ -> ()