Я хочу смочь генерировать a DataContract
из файла XSD, предпочтительно с помощью инструмента xsd.exe. Каков самый легкий путь к нему к автоматическому, генерируют [DataContract]
и [DataMember]
на каждом из моих объектов?
Или есть ли лучший подход? Я стараюсь не иметь необходимость воссоздать контракт данных каждый раз, когда файл XSD изменен и повторно создан.
Возможно, вам потребуется ознакомиться с алгоритмом Buster, описанным в этой статье .
Из статьи они могут обнаружить дубликаты страниц, даже не проверяя их содержимое. Конечно, изучение содержимого повышает эффективность, но использование необработанных журналов сервера является достаточным для метода обнаружения повторяющихся страниц.
Аналогично рекомендации использовать хеши MD5 или SHA1, метод Buster в значительной степени полагается на сравнение размера файла в качестве первичного сигнала. Как бы просто это ни звучало, это довольно эффективно для начального первого прохода.
-121--3429598- Похоже, вы получаете значение OutofmureError
.
, если это так, попробуйте увеличить размер памяти кучи.
java -Xms<initial heap size> -Xmx<maximum heap size>
-121--3653506- Средство xsd.exe
предшествует WCF и ничего не знает о [DataContract]
и [DataMember]
. При использовании xsd.exe
необходимо переключить WCF на использование GroupSerializer
вместо используемого по умолчанию DataContractSerializer
для сериализации контрактов данных.
Эквивалентом WCF для xsd.exe
является svcutil.exe
- он имеет параметр /dbonly
, который создает только контракты данных из данного XSD-файла. Это приведет к созданию файла C # или VB.NET, содержащего хорошо аннотированные контракты данных.
Использование:
svcutil.exe (name of your XSD).xsd /dconly
Это приведет к созданию файла * .cs с тем же базовым именем в каталоге.
По моему опыту, svcutil.exe
довольно придирчиво относится к своим XML-структурам - так что не удивляйтесь, если он лает на вас с множеством предупреждений и/или ошибок.