diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/HighlightingOptions.xaml.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/HighlightingOptions.xaml.cs index f5249bbb06..2851a70ed1 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/HighlightingOptions.xaml.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/HighlightingOptions.xaml.cs @@ -8,11 +8,13 @@ using System.ComponentModel; using System.Globalization; using System.IO; using System.Linq; +using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Xml; using System.Xml.Linq; + using ICSharpCode.AvalonEdit.Editing; using ICSharpCode.AvalonEdit.Folding; using ICSharpCode.AvalonEdit.Highlighting; @@ -684,6 +686,11 @@ namespace ICSharpCode.AvalonEdit.AddIn.Options #region SDSettings void LoadSDSettings(XDocument document) { + var version = document.Root.Attribute("version"); + if (version != null && version.Value != Properties.Version1.ToString()) { + Core.MessageService.ShowError("Settings version not supported!"); + return; + } var p = Properties.Load(document.CreateReader()); customizationList = p.Get("CustomizedHighlightingRules", new List()); LanguageComboBox_SelectionChanged(null, null); @@ -697,9 +704,20 @@ namespace ICSharpCode.AvalonEdit.AddIn.Options }; if (dialog.ShowDialog() != true) return; + Save(dialog.FileName); + } + + void Save(string fileName) + { Properties p = new Properties(); p.Set("CustomizedHighlightingRules", customizationList); - p.Save(dialog.FileName); + using (XmlTextWriter writer = new XmlTextWriter(fileName, Encoding.UTF8)) { + writer.Formatting = Formatting.Indented; + writer.WriteStartElement("Properties"); + writer.WriteAttributeString("version", Properties.Version1.ToString()); + p.WriteProperties(writer); + writer.WriteEndElement(); + } } } } diff --git a/src/Main/Core/Project/Src/Services/PropertyService/Properties.cs b/src/Main/Core/Project/Src/Services/PropertyService/Properties.cs index 497bcd0051..72d2e93f71 100644 --- a/src/Main/Core/Project/Src/Services/PropertyService/Properties.cs +++ b/src/Main/Core/Project/Src/Services/PropertyService/Properties.cs @@ -37,6 +37,8 @@ namespace ICSharpCode.Core /// public class Properties { + public static readonly Version Version1 = new Version(1, 0, 0, 0); + /// Needed for support of late deserialization class SerializedValue { string content;