xsd.exe генерирует повторяющиеся атрибуты при запуске по схеме OFX2.
Вопрос
Используя командную строку:
"xsd.exe" "OFX 2.1.1 schema/OFX2_Protocol.xsd" /c /namespace:OFX /nologo"
Полученный исходный файл C# не удалось собрать со следующими ошибками:
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, а затем обрезал до нужных мне полезных частей, генерирует файл C#, который прекрасно строится, но имеет все те же атрибуты, что и полное представление схемы на C#.
Есть идеи, почему?Схема OFX нарушена?xsd.exe сломан?С# сломан?Я сломлен?
Решение
Хорошо, этот ответ будет ждать долго...
Я только что столкнулся с той же проблемой.Проблема была не в foo.cs, а в foo.designer.cs.Вам необходимо удалить повторяющиеся атрибуты во втором классе.
C# должен либо разрешить дублирование атрибутов в частичных классах, либо исправить xsd, чтобы атрибуты опускались во всех файлах, кроме файла .cs.
Другие советы
у меня была та же проблема (та же проблема с «дубликатами атрибутов») с разными схемами.причина была в двух схемах xsd (2 сгенерированных файла), и в каждой из них у меня был один и тот же «тип» элемента, но с разными определениями.переименование одного из типов в другое имя решило проблему
Последняя версия загружаемой спецификации OFX содержит OFX3_Protocol_dotNET.xsd, который был изменен из OFX2_Protocol.xsd, чтобы больше подходить для инструментов генерации кода .NET.Я без проблем сгенерировал C# из этого xsd, хотя еще не десериализовал XML.