xsd.exe генерирует дублирующиеся атрибуты при запуске в схеме OFX2

2

Использование командной строки:

"xsd.exe" "OFX 2.1.1 schema/OFX2_Protocol.xsd" /c /namespace:OFX /nologo"

Исходный исходный файл С# не может построить с этими ошибками:

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

Аналогичная схема XSD, которую я скопировал из схемы OFX2, затем подрезала до полезных битов, которые я хотел, генерирует файл С#, который строит просто отлично, но имеет все те же атрибуты, что и полное представление схемы С#.

Любая идея, почему? Нарушена ли схема OFX? Исправлено ли xsd.exe? Является ли С# сломанным? Я сломался?

Теги:
xsd.exe
ofx

3 ответа

7
Лучший ответ

Хорошо, этот ответ длится долго...

Я просто столкнулся с той же проблемой. Проблема была не в foo.cs, а в foo.designer.cs. Вам нужно удалить повторяющиеся атрибуты во втором классе.

С# должен либо разрешать дубликаты атрибутов по частичным классам, либо исправить xsd, чтобы опустить атрибуты во всех, кроме файла .cs.

  • 0
    Только что заметил этот ответ - хотя «исправить xsd» на самом деле неосуществимо, оно определенно правильно :) Поведение явно неправильное, и я не думаю, что это наша вина.
  • 0
    Я согласен. Что-то сломано, и это не наша вина.
Показать ещё 1 комментарий
1

У меня была такая же проблема (такая же проблема "дубликатов атрибутов" ) с разными схемами. причина была вызвана двумя схемами xsd (2 сгенерированными файлами), и в каждом из них у меня был один и тот же "тип" элемента, но с разными определениями. переименование одного из типов на другое имя решает проблему

1

В последней версии загрузки спецификации OFX имеется "OFX3_Protocol_dotNET.xsd", которая была изменена из "OFX2_Protocol.xsd", чтобы больше соответствовать средствам генерации кода .NET. Я сгенерировал С# из этого xsd без проблем, хотя я еще не десериализовал какой-либо XML.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню