Кто-нибудь знает какие-либо шаблоны T4 для генерации классов из xsd? - PullRequest
5 голосов
/ 10 августа 2009

Я смотрю на некоторые работы по обновлению классов, сгенерированных из xsds. Я думаю, что это было бы отличным использованием шаблонов T4, но я не вижу примеров того, как люди делают это. По сути, я хотел бы сделать то, что сделал Linq to XSD , но без включения целей альфа-сборки в производственное решение.

Какие-нибудь соответствующие ссылки там?


Теперь вики. Сохраните ваши соответствующие ответы здесь.

Ответы [ 3 ]

3 голосов
/ 05 октября 2009

Я сейчас использую xsd2code.net, найдите его здесь: http://xsd2code.codeplex.com/. Множество преимуществ:

  • с открытым исходным кодом, так что вы можете настроить / взломать его

  • заменить массивы списками или даже вашим собственным типом коллекции

  • запускается из командной строки или запускается как надстройка для Visual Studio (щелкните правой кнопкой мыши xsd, укажите для создания)

Мне также нравится, что вы можете запустить его на одном xsd-файле, и он не взорвется, если ссылки на xsd не найдены (например, как делает xsd.exe). Так что его легко запустить на отдельных файлах, если вы просто хотите быстро обновить один файл.

Тем не менее, T4 должен быть вариантом, я только что погуглил T4 XSD и нашел несколько решений, говорящих об этом.

2 голосов
/ 01 октября 2011
1 голос
/ 11 августа 2009

Я обнаружил, что XSD очень сложно использовать в качестве модели для генерации кода. Это слишком гибко и сложно, чтобы быть практичным для моих нужд. Строго типизированный конструктор / генератор DataSet - отличный пример попытки использовать XSD в качестве модели генерации кода. Он работает нормально большую часть времени, но не поддерживает все возможные схемы, которые вы можете использовать. С другой стороны, XSD не может представлять информацию, необходимую для непосредственного создания табличных адаптеров, поэтому пришлось создавать специфичные для DataSet расширения.

Если вы решите пойти дальше и использовать XSD в качестве модели, вы, вероятно, захотите выбрать простое подмножество, достаточное для того, что вам нужно сгенерировать. Одним из подходов может быть загрузка схемы XSD в объект DataSet и использование этого объекта DataSet в качестве модели. Доступ к метаданным DataSet намного проще, чем к XSD общего назначения. Это также позволит вам использовать существующий конструктор DataSet в Visual Studio для редактирования ваших моделей.

...