SORU
22 Aralık 2008, PAZARTESİ


ANNOTATİON Kod Jeneratörler karşılaştırma

Xsd şema dosyaları kod üretimi araştırma yapıyorum. Benim gereksinimleri:

  • C oluşturmalıdır# 2.0 kodu (veya üzeri), gerektiğinde genel koleksiyonları kullanarak.
  • Yanıtlanan yorum yorum oluşturmak gerekir
  • Tam olarak seri hale getirilebilir kodu oluşturmak gerekir.
  • Birden çok yanıtlanan gelen oluştururken resuable basetypes oluşturmak mümkün olmalıdır aynı içerir.

(bkz: ayrıca benim diğer sorular: How can I generate multiple classes from xsd’s with common includes? How can I generate comments from xs:documentation tags in a wsdl?

Şu seçenekleri buldum:

  1. Xsd.exe (SDK ve Visual Studio ile birlikte verilen) kullanın
  2. Daniel Cazzulino XSDCodeGen
  3. Xsd2Code
  4. CodeXS
  5. Microsoft tarafından XsdObjectGen
  6. XSDClassGen (kayıp gibi Görünüyor)

Atladığım oldu mu? (1), (2) (5) ve 2.0 kodu oluşturmaz ve (3) seri kod ile sorun yaşıyorum. Kod oluşturulurken kullanılır?

CEVAP
19 Ocak 2011, ÇARŞAMBA


XSD2Code en iyi araç şu anda kullanılabilir (2011) olduğuna inanıyorum.

Geçenlerde ilgili güncellenmiş bir cevap vermek düşündüm orada araçlar ve analiz etme işi de aynı süreçten geçtiVS2010.

Bizim ana sürücü olduxsd.exetür tanımları yüzlerce biz istedik ki YANITLANAN açıklamalar, XML doc oluşturmaz. Tüm araçlar yukarıda listelenen başkalarını da denedim ve çoğu ya kaldırılmış, ya da mevcut VS2010 içinde xsd.exe mevcut işlevselliği maç bakımsız koyamadık.

Xsd2Codeancak mükemmel bir araçtır ve aktif olarak korunur gibi görünüyor. Yukarıda listelenen tüm işlevleri ve daha fazlası - Diğer sayfa da çeşitli seçenekler çıkış nasıl etkilediğini çok örnekleri var bir sürü sağlar.

Aynı zamanda var dar VS entegrasyonu da dahil olmak üzere bağlam menüsü entegrasyonu ve özel oluşturma aracı (bu da demektir ki eğer başvuru XSDs proje ve belirtin özel araç, otomatik güncelleme kod olarak " güncelleme ANNOTATİON). Tüm bunlar bizi bir sürü işten kurtardı.

Baktım diğer araçları hızlı bir özet:

  • Dingo - Java ile daha uyumlu gibi Görünüyor
  • XSDCodeGen - özel yazmak için nasıl bir demo Daha inşa aracı
  • CodeXS - iyi bir araç ama daha az entegrasyon, özellikleri ve artık savunulamaz
  • XSDObjectGen - artık savunulamaz, geçerli xsd.exe daha az işlevsellik
  • XSDClassGen - onu bulamadı
  • OXM Library -Tavsiye ederimbu proje, muhafaza bakıyor ve işlevsellik harika
  • LINQ to XSD - Çokserinaradığım ne proje ama

Ek: Eğer ileride XSD2Code, bir takım konular var ile gitmeye karar verdi eğer komut satırı aracı ile çalışırken buldum. Özellikle, bazı argümanlar belirli bir sırada olmasını gerektiren bağımsız değişken işleme ile bazı hataların yanı sıra bazı belgesiz bağımlılıklar (eg - otomatik parametreler & .NET sürüm) belirli ve bağımlı bir düzeni vardır. Aşağıdaki kodu XSD2Code kullanarak ve sonra Çıkış temizleme üretmek için kullanılan adımları gerektiği gibi sizin için geçerli olan bit al

İlk kodu oluşturmak için aşağıdaki toplu iş dosyası, doğru yerlerde yolları değiştirmeyi çalıştırın:

@echo off

set XsdPath=C:\schemas
set OutPath=%XsdPath%\Code
set ExePath=C:\Progra~1\Xsd2Code
set Namespace=InsertNamespaceHere

echo.Starting processing XSD files ...
for /f %%a IN ('dir %XsdPath%\*.xsd /a-d /b /s') do call:ProcessXsd %%a

echo.Finished processing XSD files ...
echo.&pause&
goto:eof

:ProcessXsd
%ExePath%\Xsd2Code %~1 %Namespace% %XsdPath%\Code\%~n1%.cs /pl Net35 /if- /dc /sc /eit
echo.Processed %~n1
goto:eof

Gerekli olarak oluşturulan kodu,: tidy için aşağıdaki adımları gerçekleştirin

  1. Düzenli akım proje, örnek olay, bütün kelime değiştirin[Sistem.Çalışma zamanı.Seri hale getirme.DataContractAttribute(Adı:b*=b*:q:b*Ad:b*=b*{:S})] [DataContract(Ad = \1)]
  2. Değiştir - proje, mevcut durumda, tüm kelime[Sistem.Çalışma zamanı.Seri hale getirme.() DataMemberAttribute]ile[DataMember]
  3. Düzenli akım proje, örnek olay, bütün kelime değiştirinSistem.\&Lt null; {w}>ile1\\?
  4. Düzenli - açık belgeleri, dava, bütün kelime değiştirin{w}YAZINile\1
  5. - Belgeler, dava, tüm kelime yerine açıkSistem.DateTimeileDateTimeo zaman Ekle kullanarak ifadeleri eksik
  6. - Belgeler, dava, tüm kelime yerine açık[Sistem.Xml.Seri hale getirme.() XmlİgnoreAttribute]ile[Xmlİgnore]
  7. Değiştirmek için geçerli bir projeSistem.Xml.Seri hale getirme.XmlArrayAttributeileXmlArray
  8. Değiştirmek için geçerli bir projeSistem.Xml.Seri hale getirme.XmlarrayıtemattributeileXmlArrayİtem
  9. Düzenli akım proje - değiştirin,[:N] /// \</\> açıklamalarile,

O birisi yardımcı olur umarım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Lin Steven

    Lin Steven

    17 EKİM 2006
  • michal lelkowski

    michal lelko

    9 Temmuz 2006
  • whiteboy7thst

    whiteboy7ths

    1 Temmuz 2009