Multiple XSD schema files to C# classes
Solution 1
Use the XSD.EXE program, but pass all of the schemas to the program on the same command line.
For example:
> xsd /c qbxmltypes130.xsd QBUqbxmlops130.xsd QBUqbxmlso130.xsd QBUqbxml130.xsd
Will emit a class named:
qbxmltypes130_QBUqbxmlops130_QBUqbxmlso130_QBUqbxml130.cs
In this case these are Quickbooks Desktop SDK xsd files, and the final file has types it depends on in the first 3 files. It won't emit on its own, but with its dependencies it works as desired.
Note that there is a /parameters:<file>
switch that allows you to specify a file of command line parameters. I remember using it in one project for a similar reason.
XSD.EXE doc has the parameter format.
Solution 2
I for one found the examples in the MSDN doc a bit lacking. Here's an example parameters file for the issue codemeit described:
<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/'>
<generateClasses language='CS' namespace='Namespace.subnamespace'>
<schema>FirstSchema.xsd</schema>
<schema>AnotherSchema.xsd</schema>
<schema>LastSchema.xsd</schema>
</generateClasses>
</xsd>
Related videos on Youtube

Comments
-
Ray Lu almost 4 years
What is the best way to generate C# classes from multiple XSD schema files?
Some XSD schema files may have dependency to the other, I am trying to avoid duplicated C# classes being generated.
-
ewall about 13 yearsThanks, @anony_mouse -- I was looking for a good example of that syntax!
-
Raven almost 10 yearsif you get the error "specified path or file name too long" try placing a ".\" infront of the last file and it resolves the problem, note that the output file will then be named by the last file..
-
HelpMatters over 9 yearsJust adding an example "xsd.exe /classes /n:{your_namespace} {file1}.xsd {file2}.xsd {file3}.xsd /out:{your output folder}"
-
setzamora over 8 yearsNo need to use Altova XML Spy for generating C# classes from XSDs with multiple references from now on.
-
PellucidWombat almost 8 yearsA final addition to the excellent example @vivekp gave: The last file named in the sequence seems to be the one used for generating the class file name. So his example would produce the class file {your output folder}\{file3}.cs
-
Hüseyin Yağlı almost 6 yearsGives an error and doesn't generate classes if you have circular group references.
-
Nayan Hodar over 5 yearsThanks, for the answer.