Xsd.exe или Svcutil.exe для преобразования схемы XSD в класс - PullRequest
9 голосов
/ 23 марта 2012

Так что инструмент svcutil рекомендуется поверх инструмента xsd? Я не рассматривал это как подтвержденное утверждение, но это действительно казалось таковым. Причина, по которой я запутался в этом, заключается в том, что я сгенерировал класс, используя оба инструмента. Но я получил лучший класс, используя xsd. Схема XSD состоит только из DataContracts.

Я использовал следующую команду для svcutil:

svcutil path-to\xyz.xsd /language:C# /dataContractOnly /importxmltypes /out:path-to\class.cs

Это породило желаемые классы. Но он содержал только объекты XmlNode [] для полей.

Затем я использовал следующую команду для xsd:

xsd.exe /c path-to\xyz.xsd /out:path-to\class.cs

Он генерировал намного лучшие классы, чем svcutil. Большинство полей были преобразованы по желанию.

Должен ли я иметь какие-либо основания полагать, что мне следует использовать svcutil вместо xsd?

Ответы [ 2 ]

5 голосов
/ 23 марта 2012

Насколько я знаю, у XSD.exe есть некоторые ограничения;например, когда в классе есть Dictionary<,>, XSD.exe не может создать правильный XSD;как Dictionary не реализует IXmlSerializable.

3 голосов
/ 08 июня 2012

svcutil не поддерживает атрибуты xml. Если вам нужно использовать их в своей схеме, вам лучше использовать xsd.exe.

Лично я предпочитаю использовать svcutil вместо xsd, и я узнал, как формировать свои схемы для вывода нужной структуры классов, но я также в основном работаю со схемами, которые разрабатываю с нуля, а не с использованием предопределенных из них.

...