如何从xsd生成.NET 4.0类?

什么是使用Visual Studio 2010从xsd文件生成.NET 4.0 c#类(实体)的选项?

够简单; 只需运行(在vs命令提示符下)

xsd your.xsd /classes 

(这将创buildyour.cs )。 但是,请注意,这里的大多数内在选项自2.0以来没有太大的改变

对于选项,使用xsd /? 或者看MSDN ; 例如/enableDataBinding可以是有用的。

如Marc Gravell提到的xsd.exe。 启动和运行IMO的最快方法。

或者,如果您需要更多灵活性/选项:

xsd2code VS加载项(Codeplex)

当你有循环引用(即一个types可以直接或间接拥有自己types的元素)时,xsd.exe不能正常工作。

当存在循环引用时,我使用Xsd2Code。 Xsd2Code很好地处理循环引用,并在VS IDE中工作,这是一个很大的优势。 它还有很多function可以用来生成序列化/反序列化代码。 如果你正在生成序列化,确保你打开了GenerateXMLAttributes(否则如果没有在所有元素上定义,你将得到sortingexception)。

selectfunction都不能很好地工作。 你将最终得到对象的列表/集合,而不是你想要的types。 如果可能的话,我build议避免select在你的xsd,因为这不会序列化/反序列化到一个强types的类。 如果你不在乎这个,那么这不是问题。

在xsd2code的任何function反序列化为System.Xml.XmlElement,我发现真的很方便,但如果你想要强types的对象可能是一个问题。 我经常使用任何允许自定义configuration数据的方式,所以XmlElement可以方便地传递给别处定制定义的另一个XML解串器。

我使用批处理脚本中的XSD直接从XML生成.xsd文件和类:

 set XmlFilename=Your__Xml__Here set WorkingFolder=Your__Xml__Path_Here set XmlExtension=.xml set XsdExtension=.xsd set XSD="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1\Tools\xsd.exe" set XmlFilePath=%WorkingFolder%%XmlFilename%%XmlExtension% set XsdFilePath=%WorkingFolder%%XmlFilename%%XsdExtension% %XSD% %XmlFilePath% /out:%WorkingFolder% %XSD% %XsdFilePath% /c /out:%WorkingFolder% 

Marc Gravells的答案是适合我的,但是我的xsd是扩展名为.xml的。 当我使用xsd程序时,它给了:
- The table (Amt) cannot be the child table to itself in nested relations.

按照这个KB325695,我把.xml的扩展名改名为.xsd,它工作的很好。

我在Windows命令提示符下使用了xsd.exe

但是,由于我的XML引用了几个在线XML(在我的情况下http://www.w3.org/1999/xlink.xsd哪些引用http://www.w3.org/2001/xml.xsd )我也必须下载这些原理图,把它们放在与我的xsd相同的目录中,然后在命令中列出这些文件:

“C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Tools \ xsd.exe”/ classes / language:CS your.xsd xlink.xsd xml.xsd