340 votes

Comment générer des classes .NET 4.0 à partir de xsd ?

Quelles sont les options pour générer des classes c# .NET 4.0 (entités) à partir d'un fichier xsd, en utilisant Visual Studio 2010 ?

0 votes

@drzaus Cela fonctionnait dans le passé, mais maintenant quand j'en ajoute un, il génère une classe DataSet au lieu des classes auxquelles je m'attendrais. J'ajoute simplement un élément existant et je sélectionne le fichier XSD.

5voto

hdoghmen Points 92

J'utilise XSD dans un script de lot pour générer .xsd et les classes de XML directement :

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%

4voto

Melchia Points 7965

La commande qui a fonctionné dans mon cas était :

xsd /c your.xsd

1voto

Igoris Azanovas Points 1180

La réponse de Marc Gravells était correcte pour moi mais mon xsd avait une extension de .xml. Lorsque j'ai utilisé le programme xsd, il a donné :
- The table (Amt) cannot be the child table to itself in nested relations.

Selon ce document KB325695 J'ai renommé l'extension de .xml en .xsd et cela a bien fonctionné.

1voto

Aske B. Points 1055

J'ai utilisé xsd.exe dans l'invite de commande de Windows.

Cependant, étant donné que mon xml faisait référence à plusieurs xml en ligne (dans mon cas http://www.w3.org/1999/xlink.xsd qui fait référence http://www.w3.org/2001/xml.xsd ) J'ai également dû télécharger ces schémas, les placer dans le même répertoire que mon xsd, puis lister ces fichiers dans la commande :

" C:\Program Fichiers (x86) \Microsoft SDKs \Windows\v8.1A\bin\NETFX 4.5.1 Outils \xsd.exe " /classes /langue:CS votre.xsd xlink.xsd xml.xsd

0voto

En plus du WSDL, j'avais des fichiers xsd. La méthode ci-dessus n'a pas fonctionné dans mon cas et a donné lieu à une erreur. Cela a fonctionné comme suit

wsdl /l:C# /out:D:\FileName.cs D:\NameApi\wsdl_1_1\RESAdapterService.wsdl 
D:\CXTypes.xsd D:\CTypes.xsd 
D:\Preferences.xsd

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X