2

単純な問題のようですが、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、オブジェクト値、ブール値の ignoreLocks) で ...

F# には適切なドキュメントがなく、C#/VB のドキュメントに従うのは難しいと思います。助言がありますか?

4

1 に答える 1

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
| _         -> ()
于 2012-09-28T09:22:56.283 に答える