¿Cómo generar clases .NET 4.0 desde xsd?

¿Cuáles son las opciones para generar clases .NET 4.0 c # (entidades) desde un archivo xsd, usando Visual Studio 2010?

Suficientemente simple; simplemente ejecute (en el indicador de comando vs)

xsd your.xsd /classes 

(que creará your.cs ). Tenga en cuenta, sin embargo, que la mayoría de las opciones intrínsecas aquí no han cambiado mucho desde 2.0

Para las opciones, use xsd /? o vea MSDN ; por ejemplo /enableDataBinding puede ser útil.

xsd.exe como lo menciona Marc Gravell. La forma más rápida de iniciar y ejecutar IMO.

O si necesita más flexibilidad / opciones:

Complemento xsd2code VS (Codeplex)

xsd.exe no funciona bien cuando tiene referencias circulares (es decir, un tipo puede poseer un elemento de su propio tipo directa o indirectamente).

Cuando existen referencias circulares, uso Xsd2Code. Xsd2Code maneja bien las referencias circulares y funciona dentro de VS IDE, que es una gran ventaja. También tiene muchas funciones que puedes usar para generar el código de serialización / deserialización. Asegúrese de activar GenerateXMLAttributes si está generando serialización (de lo contrario obtendrá excepciones para ordenar si no está definido en todos los elementos).

Ninguno de los dos funciona bien con la función de elección. terminará con listas / colecciones de objetos en lugar del tipo que desee. Recomiendo evitar la elección en tu xsd si es posible, ya que no se serializa / deserializa bien en una clase fuertemente tipada. Sin embargo, si no te importa esto, entonces no es un problema.

La función de cualquier en xsd2code se deserializa como System.Xml.XmlElement, lo que me parece muy conveniente, pero puede ser un problema si quieres objetos fuertemente tipados. A menudo uso cualquiera al permitir datos de configuración personalizados, por lo que un XmlElement es conveniente pasar a otro deserializador XML que está personalizado en otro lugar.

Uso XSD en una secuencia de comandos por lotes para generar directamente el archivo .xsd y las clases de XML :

 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% 

La respuesta de Marc Gravells fue correcta para mí, pero mi xsd fue con la extensión de .xml. Cuando utilicé el progtwig xsd dio:
- The table (Amt) cannot be the child table to itself in nested relations.

De acuerdo con este KB325695 renuncié a la extensión de .xml a .xsd y funcionó bien.

xsd.exe en el símbolo del sistema de Windows.

Sin embargo, como mi xml hace referencia a varios xml en línea (en mi caso, http://www.w3.org/1999/xlink.xsd que hace referencia a http://www.w3.org/2001/xml.xsd ), también tuve que descargue esos esquemas, colóquelos en el mismo directorio que mi xsd, y luego liste esos archivos en el comando:

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