问题
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?
回答1:
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.
回答2:
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).
回答3:
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.
回答4:
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.
来源:https://stackoverflow.com/questions/289335/xsdobjectgen-exe-vs-xsd-exe