XSDObjectGen.exe vs XSD.exe

Может ли кто-нибудь сказать мне, в чем разница между XSDObjectGen.exe и XSD.exe?

Есть ли способ сделать XSDObjectGen.exe работать в dot net 2.0?

Ответ 1

В качестве альтернативы, Xsd2Code. Некоторые функции:

  • Создание частичного класса.
  • Поддержка общей и пользовательской коллекции (List, ObservableCollection, MyCustomCollection).
  • Поддерживать автоматические свойства, если не требуется специальный набор или набор.
  • Может генерировать атрибуты WCF (DataContract/DataMember).
  • Поддерживает неровный тип.
  • Маска частного поля в среде IDE (используйте атрибут EditorBrowsableState.Never).
  • Сгенерировать распределение объектов в конструкторе.
  • Внедрить INotifyPropertyChanged для включения DataBinding для wpf или Silverlight.
  • Повышает производительность благодаря надстройке с визуальной студией.
  • Сгенерировать итоговую документацию из аннотации xsd.
  • Проверьте, не изменились ли новые и старые значения int setter перед тем, как добавить событие с изменением свойства.
  • создание резервных копий в заголовках cs или vb.
  • Сохраните и загрузите документ Xml в изолированное хранилище файлов для приложения silverlight (новое в версии 3.0).
  • Сгенерировать код CS, VB или CPP.
  • Сериализовать/десериализовать объект.
  • Сохранение в файл и загрузка из файла.
  • Включить Xsd2CodeCustomTool.

Ответ 2

Разница заключается в следующем:

  • Инструмент определения схемы XML (xsd.exe) является частью SDK Visual Studio и имеет базовые функции.
  • XSD Generator Tool (XSDObjectGen.exe) - это более полнофункциональный инструмент с более расширенными функциями и выпускается отдельно.

Чтобы дать вам некоторое представление, вот список основных функций для XSDObjectGen.exe:

  • Поддержка наиболее популярных конструкций схем XML
  • Перечисление и поведение коллекции для повторяющихся элементов
  • Модель программирования, соответствующая схеме
  • Автоматическое построение подклассов
  • Устранение конфликтов при столкновении
  • Интеграция с IDE Visual Studio
  • Специальная логика обработки для типов DateTime
  • Поддержка многостраничной схемы.
  • Сериализация пространства имен XML
  • Поддержка опций и последовательностей
  • Поддержка выбора
  • Группа замещения
  • Метод MakeSchemaCompliant
  • Некомплексная обработка ссылочного типа
  • Соответствие базового профиля WS-I.org
  • Поддержка нескольких языков программирования
  • Глубокие события траверса

Подробнее об этих функциях см. файл документации XSDObjectGen.doc(доступный в C:\Program Files\XSDObjectGenerator после установки инструмента).

Ответ 3

Похоже, вы можете использовать его с VS2005 по крайней мере (согласно эта статья, так или иначе)

Просто добавьте его в коллекцию внешних инструментов VS2005 в разделе "Инструменты → Внешние инструменты...".

Задайте параметры следующим образом

  • Для VB: $(ItemPath)/l: vb /f:$(ItemFileName).vb/c/d/t
  • Для С#: $(ItemPath)/l: cs /f:$(ItemFileName).vb/c/d/t

Похоже, что XSD и XSDObjectGen будут давать разные классы. На самом деле, комментарии в этой статье Рика Стралла гласят: " они дают очень разные классы" в здесь.

Ответ 4

На чисто техническом уровне:

XSD.exe использует Arrays
XSDObjectGen делает небольшой шаг вперед и использует ArrayLists.
XSD2Code прыгает вперед с использованием Generics.

Если вы используете .NET 2.0 и выше, используя XSD2Code, наиболее предпочтительным.