xsd.exe не работает, когда у вас есть циклические ссылки (т. Е. Тип может иметь элемент своего типа прямо или косвенно).
Когда существуют циклические ссылки, я использую Xsd2Code.Xsd2Code хорошо обрабатывает циклические ссылки и работает в VS IDE, что является большим плюсом.Он также имеет множество функций, которые вы можете использовать, например, создание кода сериализации / десериализации.Убедитесь, что вы включили GenerateXMLAttributes, если вы генерируете сериализацию (в противном случае вы получите исключения для упорядочения, если не определены для всех элементов).
Ни то, ни другое не работает с функцией выбора.в итоге вы получите списки / коллекции объектов, а не того типа, который вам нужен.Я бы порекомендовал избегать выбора в вашем xsd, если это возможно, так как это плохо сериализует / десериализует в строго типизированный класс.Однако если вас это не волнует, тогда это не проблема.
Любая функция в xsd2code десериализуется как System.Xml.XmlElement, что, на мой взгляд, очень удобно, но может быть проблемой, если вы хотите использовать строгий типизированныйобъекты.Я часто использую любые, когда разрешаю настраиваемые данные конфигурации, поэтому XmlElement удобно передавать другому десериализатору XML, который определен в другом месте.