Я был в этой разочаровывающей ситуации раньше ... Я думаю, что это невозможно сделать с помощью XmlSerializer.XmlSerializer компилирует подпрограмму сериализации, которая построена на основе вашей текущей иерархии типов.Если вы слишком сильно это измените, XML станет несовместимым с новой структурой классов.
Я не думаю, что генерируются какие-либо схемы XML, единственной «схемой» является скомпилированный специальный код сериализатора XML.
Вы могли бы делать то, что хотите, 1) создавая новые классы, которые отражают ваши изменения, 2) десериализовать XML в старые классы, 3) применять морфингмежду старыми и новыми объектами, 4) сериализацию новых объектов, 5) изменение имен классов на старые, 6) замена временных имен в XML,
, но это чрезвычайно болезненно (хотя это может быть нормальнокак разовый).
Если вам нужно справиться с частыми изменениями (или если вы используете недопустимые для сериализации компиляторы, такие как текущий F # one), то лучшая идея здесь - написать ваш собственный XmlSerializer (возможно, с использованием Linq2XML), который может справиться с изменениями кода.