xsd.exe gera atributos duplicados quando executado em esquema OFX2
Pergunta
Usando a linha de comando:
"xsd.exe" "OFX 2.1.1 schema/OFX2_Protocol.xsd" /c /namespace:OFX /nologo"
O arquivo C # fonte resultante não consegue construir com esses erros:
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
Um esquema XSD semelhante, que eu copiei do esquema OFX2 então aparadas para baixo para os bits úteis que eu queria, gera um arquivo C # que constrói muito bem, ainda tem todos os mesmos atributos como C representação do esquema completo #.
Qualquer ideia porquê? É o esquema OFX quebrado? É xsd.exe quebrado? É C # quebrado? Am I quebrado?
Solução
Ok, esta resposta é um tempo para chegar ...
Eu corri para o mesmo problema. O problema não estava em foo.cs, mas em foo.designer.cs. Você tem que remover os atributos duplicados na segunda classe.
C # deve ou permitir atributos duplicados em frente classes parciais, ou correção xsd para omitir atributos de todos, mas o ficheiro.cs.
Outras dicas
Eu tive o mesmo problema (o mesmo "atributos duplicados" problema) com diferentes esquemas. a razão deveu-se 2 esquemas XSD (2 arquivos gerados) e em cada um deles eu tinha o mesmo "tipo" de elemento, mas com definições diferentes. renomeação de um dos tipos em nome diferente resolveu o problema
A última versão do Download especificação OFX tem um 'OFX3_Protocol_dotNET.xsd' que tenha sido modificado a partir do 'OFX2_Protocol.xsd' para ser mais adequado para ferramentas de geração de código .NET. I geraram C # a partir desta XSD sem problemas embora eu não tenha deserialised qualquer XML ainda.