Est-il possible d’exporter un schéma XSD à partir d’un DataContract?

J’utilise DataContractSerializer pour sérialiser / désérialiser mes classes en / à partir de XML. Tout fonctionne bien, mais à un moment donné, j’aimerais établir un schéma standard pour le format de ces fichiers XML, indépendamment du code actuel. Ainsi, si quelque chose se brise dans le processus de sérialisation, je peux toujours revenir en arrière et vérifier quel devrait être le schéma standard. Ou si j’ai besoin de modifier le schéma, la modification est une décision explicite plutôt que simplement un effet ultérieur de la modification de mon code.

En outre, d’autres personnes peuvent être en train d’écrire un logiciel autre que .NET qui aurait besoin de lire à partir de ces fichiers XML. J’aimerais pouvoir leur fournir une sorte de documentation du schéma.

Existe-t-il une relation entre un schéma DataContract et un schéma XSD? Existe-t-il un moyen d’exporter les atsortingbuts DataContract dans les classes en tant que schéma XSD?

Svcutil.exe peut “exporter des métadonnées pour des contrats de données compilés” .
Il existe une relation entre DataContract et XSD :

DataContractSerializer mappe les types CLR sur XSD lorsque les métadonnées sont exscopes à partir d’un service Windows Communication Foundation (WCF) à l’aide d’un sharepoint terminaison de métadonnées ou de l’utilitaire de métadonnées ServiceModel (Svcutil.exe). Pour plus d’informations, voir Sérialiseur de contrat de données.

DataContractSerializer mappe également les types XSD à CLR lorsque Svcutil.exe est utilisé pour accéder à des documents WSDL (Web Services Description Language) ou XSD et générer des contrats de données pour des services ou des clients.

Vous pouvez également obtenir le ou les XSD au moment de l’exécution, même dans votre navigateur, en configurant un sharepoint terminaison MEX .
Par défaut, le WSDL contient des références à un ou plusieurs XSD accessibles via le noeud final.

Oui, vous pouvez utiliser XsdDataContractExporter .

Un exemple est fourni dans l’article MSDN intitulé Exporting Schemas from Classes .

Vous pourrez peut-être générer des fichiers de schéma à partir de DataContracts à l’aide de l’outil svcutil.exe fourni avec Visual Studio.

svcutil myAssembly.dll - Generate metadata documents for Service Contracts and associated types in an assembly svcutil myServiceHost.exe /serviceName:myServiceName - Generate metadata documents for a service, and all associated Service Contracts and data types in an assembly svcutil myServiceHost.exe /dconly - Generate metadata documents for data types in an assembly 

Je crois que je me suis trompé avec cela à un moment donné dans le passé et que je l’ai peut-être fait ou non. Un autre moyen simple de générer des schémas consiste à mettre en place un service WCF qui utilise vos contrats de données et à accéder au WSDL. Le WSDL importera tous les xsds pour le DataContracts.