xsd.exe genera attributi duplicati quando viene eseguito su schema OFX2
Domanda
Uso della riga di comando:
"xsd.exe" "OFX 2.1.1 schema/OFX2_Protocol.xsd" /c /namespace:OFX /nologo"
Il file sorgente C # risultante non riesce a costruire con questi errori:
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
Uno schema XSD simile, che ho copiato dallo schema OFX2 poi tagliato verso il basso per i bit utili che volevo, genera un file C # che costruisce bene, ma ha tutti gli stessi attributi C # rappresentanza piena di schema.
Qualsiasi idea del perché? È lo schema OFX rotto? È xsd.exe rotto? È C # rotto? Sto rotto?
Soluzione
Ok, questa risposta è un lungo tempo a venire ...
Ho appena incontrato lo stesso problema. Il problema non era in foo.cs, ma in foo.designer.cs. È necessario rimuovere gli attributi duplicati nella seconda classe.
C # dovrebbe o consentire attributi duplicati accross classi parziali, o fissare xsd omettere attributi in tutti, ma il file .cs.
Altri suggerimenti
ho avuto lo stesso problema (lo stesso "attributi duplicati" problema) con differenti schemi. il motivo era dovuto a 2 schemi XSD (2 file generato) e in ciascuna di esse i avuto lo stesso "tipo" di elemento, ma con definizioni diverse. rinomina di uno dei tipi in nome diverso risolto il problema
L'ultima versione della specifica OFX download ha un 'OFX3_Protocol_dotNET.xsd' che è stato modificato dal 'OFX2_Protocol.xsd' per essere più adatto a strumenti di generazione di codice .NET. Ho generato C # da questo XSD senza problemi, anche se non ho ancora deserialised qualsiasi XML.