Como gerar classs do .NET 4.0 a partir do xsd?

Quais são as opções para gerar classs c # .NET 4.0 (entidades) de um arquivo xsd, usando o Visual Studio 2010?

simples o suficiente; apenas execute (no prompt de comando vs)

xsd your.xsd /classs 

(que irá criar your.cs ). Note, no entanto, que a maioria das opções intrínsecas aqui não mudou muito desde 2.0

Para as opções, use xsd /? ou consulte o MSDN ; por exemplo, /enableDataBinding pode ser útil.

xsd.exe como mencionado por Marc Gravell. A maneira mais rápida de se levantar e executar o IMO.

Ou se você precisar de mais flexibilidade / opções:

Suplemento VS xsd2code (Codeplex)

xsd.exe não funciona bem quando você tem referências circulares (ou seja, um tipo pode possuir um elemento de seu próprio tipo direta ou indiretamente).

Quando referências circulares existem, eu uso Xsd2Code. O Xsd2Code trata bem as referências circulares e trabalha dentro do VS IDE, o que é uma grande vantagem. Ele também tem muitos resources que você pode usar, como gerar o código de serialização / desserialização. Certifique-se de ativar o GenerateXMLAttributes se estiver gerando serialização (caso contrário, você obterá exceções para o pedido, se não definido em todos os elementos).

Nem funciona bem com o recurso de escolha. você vai acabar com listas / collections de objects em vez do tipo que você quer. Eu recomendaria evitar a escolha em seu xsd se possível, pois isso não serializa / desserializa bem em uma class fortemente tipada. Se você não se importa com isso, então, não é um problema.

O recurso qualquer em xsd2code desserializa como System.Xml.XmlElement que considero muito conveniente, mas pode ser um problema se você quiser objects typescripts fortes. Eu geralmente uso qualquer um ao permitir dados de configuração personalizados, portanto é conveniente passar um XmlElement para outro deserializador de XML que é personalizado em outro lugar.

Eu uso o XSD em um script em lote para gerar o arquivo .xsd e classs diretamente do 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% 

A resposta de Marc Gravells foi certa para mim, mas meu xsd foi com extensão de .xml. Quando eu usei o programa xsd, ele deu:
- The table (Amt) cannot be the child table to itself in nested relations.

De acordo com este KB325695 renomei extensão de .xml para .xsd e funcionou bem.

Eu usei xsd.exe no prompt de comando do Windows.

No entanto, como o meu xml referenciava vários xml online (no meu caso http://www.w3.org/1999/xlink.xsd que referencia http://www.w3.org/2001/xml.xsd ) eu tive que faça o download desses esquemas, coloque-os no mesmo diretório do meu xsd e liste esses arquivos no comando:

“C: \ Arquivos de Programas (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Ferramentas \ xsd.exe” / classs / language: CS seu.xsd xlink.xsd xml.xsd