Я не уверен, что понимаю вас. Я бы сказал, не используйте XmlSerializer, потому что он предназначен для создания сериализованных версий объектов в форме XML. Объекты не имеют в них комментариев XML, поэтому XML, сгенерированный для объекта, не будет генерировать никаких комментариев. Если вы хотите иметь дело с чистым XML, просто использовать простой класс XML разбора, а не один, предназначенные для сериализации классов, как XML-документы:
string myXml =
"<?xml version=\"1.0\" encoding=\"utf-8\" ?>" + Environment.NewLine +
"<!-- This is a comment -->" + Environment.NewLine +
"<Root><Data>Test</Data></Root>";
System.Xml.XmlDocument xml = new System.Xml.XmlDocument();
xml.PreserveWhitespace = true;
xml.LoadXml(myXml);
var newElem = xml.CreateElement("Data");
newElem.InnerText = "Test 2";
xml.SelectSingleNode("/Root").AppendChild(newElem);
System.Xml.XmlWriterSettings xws = new System.Xml.XmlWriterSettings();
xws.Indent = true;
using (System.Xml.XmlWriter xw = System.Xml.XmlWriter.Create(Console.Out, xws))
{
xml.WriteTo(xw);
}
BTW вы должны использовать 'используя (TextWriter писатель = новый StreamWriter (путь)) {serializer.Serialize (запись, настройки);} '. Обеспечивает очистку записи, даже если есть исключение. –