/// <summary> /// creates or converts an existing configuration into the new format, but only if the existing configuration is null or its version is not /// <para>after this method has finished, _configuration will have a valid value</para> /// </summary> private bool ConvertOrCreate() { if (_configuration == null || _configuration.Version != Assembly.GetExecutingAssembly().GetName().Version.ToString()) { _elementReadCallback = null; if (_configuration == null) { _configuration = new Xml.Settings.Options(); } _configuration.Version = Assembly.GetExecutingAssembly().GetName().Version.ToString(); //-----read the existing file and convert if possible if (File.Exists(ExtensionManager.Instance.SettingsFileFullname)) { try { new XmlReader(false) { OnElementRead = ElementCallback, OnAttributesRead = AttributesCallback }.Read(ExtensionManager.Instance.SettingsFileFullname); } catch (Exception ex) { LoggingManager.Instance.Logger.Error(string.Format("could not read settings file {0}", ExtensionManager.Instance.SettingsFileFullname), ex); } } return(true); } return(false); }
/// <summary> /// loads the confiugration from the file /// </summary> public void LoadSettings() { lock (_lockSaveLoad) { int newConfigurationHashCode = XmlUtil.ToString(Configuration).GetHashCode(); if (newConfigurationHashCode != _configurationHashCode) { Debug.WriteLine(string.Format("started loading at {0:hh:mm.ss:ffff}", DateTime.Now)); try { _configuration = XmlUtil.Deserialize <Xml.Settings.Options>(ExtensionManager.Instance.SettingsFileFullname); _configurationHashCode = XmlUtil.ToString(_configuration).GetHashCode(); } catch (Exception ex) { LoggingManager.Instance.Logger.Warn(string.Format("could not deserialize configuration file {0}", ExtensionManager.Instance.SettingsFileFullname), ex); } Debug.WriteLine(string.Format("finished loading at {0:hh:mm.ss:ffff}", DateTime.Now)); } } }