using System.Xml.Serialization;
[Obsolete("This property is obsolete. Use MyNewProperty instead.")]
public string MyObsoleteProperty { get; set; }
public static void Main()
MyObsoleteProperty = "Some value"
var overrides = new XmlAttributeOverrides();
var attributes = new XmlAttributes { XmlIgnore = false };
overrides.Add(typeof(MyClass), nameof(MyClass.MyObsoleteProperty) , attributes);
var serializer = new XmlSerializer(typeof(MyClass), overrides);
using (var writer = new StreamWriter("data.xml"))
serializer.Serialize(writer, myObj);
using (var reader = new StreamReader("data.xml"))
deserializedObj = (MyClass)serializer.Deserialize(reader);
Console.WriteLine(deserializedObj.MyObsoleteProperty);