2009-08-10 6 views
5

Szukam niektórych prac aktualizacji klas generowanych z xsds. Myślę, że byłoby to świetne wykorzystanie szablonów T4, ale nie widzę przykładów takich działań. Zasadniczo chciałbym zrobić to, co zrobił Linq to XSD, ale bez uwzględniania celów budowy alfa w rozwiązaniu produkcyjnym.Ktoś wie o szablonach T4 do generowania klas z xsd?

Jakieś odnośne linki tam?


Teraz wiki. Tutaj przechowuj odpowiednie odpowiedzi.

Odpowiedz

3

Aktualnie używam xsd2code.net, znajduję tutaj: http://xsd2code.codeplex.com/. wiele korzyści:

  • open source, więc można dostroić/włamać to

  • wymienić tablice z listami lub nawet swój własny niestandardowy typ kolekcja

  • biegu z poleceń lub uruchom jako dodatek do wizualnego studia (kliknij prawym przyciskiem myszy xsd, powiedz, aby wygenerować)

Podoba mi się również, że można go uruchomić na pojedynczym pliku xsd nd to nie będzie wysadzone, jeśli nie można znaleźć odniesionych xsd (jak robi to xsd.exe). Łatwo jest więc uruchomić go na pojedynczych plikach, na wypadek gdybyś chciał tylko wykonać szybką aktualizację jednego pliku.

Jednak T4 również powinien być opcjonalny, po prostu szukałem T4 XSD i znalazłem kilka rozwiązań mówiących o tym.

+0

Myślę, że jest to najlepsze rozwiązanie w tym momencie. Lepszą duszą jest prawdopodobnie uniknięcie sytuacji na samym początku. – Will

+0

Aby zaktualizować: Im obecnie przeglądam ten projekt - http://oxmlibrary.codeplex.com/ - Wydaje się nieco hackish, ale bardziej "hackable", jeśli ma to sens. –

+0

Will, wracam do robienia tego dokładnie. Unikanie może być najlepsze, ale w przypadku, gdy standard branżowy został zdefiniowany w xsd, generowanie klas ze schematu jest bardzo ważną operacją. Choć niezbyt zabawne. –

1

Zauważyłem, że XSD jest bardzo trudny w użyciu jako model do generowania kodu. Jest zbyt elastyczny i złożony, aby mógł być praktyczny dla moich potrzeb. Silnie napisany projektant/generator DataSet jest doskonałym przykładem próby użycia XSD jako modelu generowania kodu. To działa OK przez większość czasu, ale nie obsługuje wszystkich możliwych schematów, które można na nim rzucić. Z drugiej strony XSD nie może reprezentować informacji wymaganych do bezpośredniego generowania adapterów tabel, dlatego konieczne było utworzenie rozszerzeń specyficznych dla DataSet.

Jeśli zdecydujesz się użyć XSD jako modelu, prawdopodobnie będziesz chciał wybrać prosty podzbiór, wystarczający do tego, co musisz wygenerować. Jednym ze sposobów może być załadowanie schematu XSD do obiektu DataSet i użycie tego obiektu DataSet jako modelu. Metadane DataSet są łatwiejsze do uzyskania niż XSD ogólnego przeznaczenia. Umożliwi to również wykorzystanie istniejącego projektanta DataSet w Visual Studio do edycji modeli.

+0

Generowanie kodu dla klas, które posiadają rozszeregować xml. Albo buduję własne modele i parsuję w nich xml, albo po prostu deserializuję obiekty bezpośrednio z xml. Poszukuje bardziej lekkiego rozwiązania niż zestawy danych ... które pozwala mi pisać częściowe klasy dla zserializowanych danych. – Will