xsd.exe génère des attributs en double lorsqu'il est exécuté sur schéma OFX2
Question
En utilisant la ligne de commande:
"xsd.exe" "OFX 2.1.1 schema/OFX2_Protocol.xsd" /c /namespace:OFX /nologo"
Le fichier résultant source C # ne parvient pas à construire avec ces erreurs:
D:\blah\OFX2_Protocol.cs(19,6): error CS0579: Duplicate 'System.CodeDom.Compiler.GeneratedCodeAttribute' attribute
D:\blah\OFX2_Protocol.cs(20,6): error CS0579: Duplicate 'System.SerializableAttribute' attribute
D:\blah\OFX2_Protocol.cs(21,6): error CS0579: Duplicate 'System.Diagnostics.DebuggerStepThroughAttribute' attribute
D:\blah\OFX2_Protocol.cs(22,6): error CS0579: Duplicate 'System.ComponentModel.DesignerCategoryAttribute' attribute
D:\blah\OFX2_Protocol.cs(23,6): error CS0579: Duplicate 'System.Xml.Serialization.XmlTypeAttribute' attribute
D:\blah\OFX2_Protocol.cs(24,6): error CS0579: Duplicate 'System.Xml.Serialization.XmlRootAttribute' attribute
Un schéma XSD similaire, que je copiais du schéma OFX2 puis dégrossi aux bits utiles que je voulais, génère un fichier C # qui construit très bien, n'a pas encore tous les mêmes attributs que C # représentation du plein schéma.
Une idée pourquoi? Est-ce le schéma OFX cassé? xsd.exe est cassé? C # est cassé? Suis-je brisé?
La solution
Ok, cette réponse est une longue période à venir ...
Je viens de rencontrer le même problème. Le problème n'a pas été en foo.cs, mais foo.designer.cs. Vous devez supprimer les attributs en double dans la deuxième classe.
C # doit permettre soit d'attributs en double accross classes partielles ou fixer xsd d'omettre les attributs dans tout sauf le fichier .cs.
Autres conseils
i eu le même problème (le même problème « attributs en double ») avec différents schémas. la raison est due à 2 schémas XSD (2 fichiers générés) et dans chacun d'eux i eu le même « type » de l'élément, mais avec des définitions différentes. Changement de nom de l'un des types différents en nom résolu le problème
La dernière version du téléchargement de spécification OFX a un « OFX3_Protocol_dotNET.xsd » qui a été modifié de la « OFX2_Protocol.xsd » pour être plus adapté aux outils de génération de code .NET. J'ai généré C # de ce xsd sans aucun problème même si je ne l'ai pas encore de désérialisé XML.