Can anyone tell me what is the difference between XSDObjectGen.exe & XSD.exe?
Is there any way to make XSDObjectGen.exe work in dot net 2.0?
As an alternative, there's Xsd2Code. Some features:
- Generate partial class.
- Support generic and custom collection (List, ObservableCollection, MyCustomCollection).
- Support automatic properties when no special get or set is required.
- Can generate WCF attributes (DataContract/DataMember).
- Support nillable type.
- Mask private field in IDE (use EditorBrowsableState.Never attribute).
- Generate object allocation in constructor.
- Implement INotifyPropertyChanged for enable DataBinding for wpf or Silverlight.
- Improves productivity with visual studio add-in.
- Generate summary documentation from xsd annotation.
- Check if the new and old values int setter are the same before raising property changed event.
- backup options generation in cs or vb header.
- Save and load Xml document into isolated file storage for silverlight app (new in 3.0).
- Generate CS, VB or CPP code.
- Serialize/deserialize object.
- Save into file and load from file.
- Include Xsd2CodeCustomTool.
The difference is:
- The XML Schema Definition Tool (
xsd.exe
) is part of the Visual Studio SDK and has basic functionality.
- The XSD Sample Code Generator Tool (
XSDObjectGen.exe
) is a more fully featured tool with more advanced features, and is released separately.
To give you some idea, here is a summary feature list for XSDObjectGen.exe
:
- Support for the most popular XML schema constructs
- Enumerator and Collection behavior for repeating elements
- Programming model that matches schema
- Automatic sub-class construction
- Name collision avoidance
- Visual Studio IDE integration
- Special handling logic for DateTime types
- Multipart schema support
- XML namespace serialization
- Optional and Sequence support
- Choice Support
- Substitution group
- MakeSchemaCompliant method
- Non-optional reference-type handling
- WS-I.org basic profile compliance
- Multi-programming language support
- Depth-wise Traversal Events
For more details on these features see the XSDObjectGen.doc documentation file (available in C:\Program Files\XSDObjectGenerator
after you install the tool).
Looks like you can use it with VS2005 at least (according to this article, anyway)
Just add it to your External Tools collection of VS2005 under "Tools>>External Tools...".
Set your parameters as the following
- For VB: $(ItemPath) /l:vb
/f:$(ItemFileName).vb /c /d /t
- For C#: $(ItemPath) /l:cs
/f:$(ItemFileName).vb /c /d /t
It does appear that XSD and XSDObjectGen will yield different classes. In fact, comments in this Rick Strahl article say "they yield very different classes" in the article here.
At a purely technical level:
XSD.exe uses Arrays
XSDObjectGen takes a tiny step ahead and uses ArrayLists
.
XSD2Code leaps ahead with usage of Generics
.
If you're using .NET 2.0 and above using XSD2Code is most preferred.