私はxsdスキーマファイルからのコード生成の研究をしています。私の要件:
(他の質問も参照してください: 一般的なインクルードを使用してxsdから複数のクラスを生成するにはどうすればよいですか? および wsdlのxs:documentationタグからコメントを生成するにはどうすればよいですか
次のオプションが見つかりました。
私は何かを見逃しましたか? (1)、(2)、(5)は2.0コードを生成しないため、(3)のコードをシリアル化する際に問題が発生するためです。コードを生成するときに何を使用しますか?
XSD2Code が現在利用可能な最高のツールであると考えています(2011年)。
私は最近、利用可能なツールを分析する仕事で同じプロセスを経験したので、VS2010に関連する更新された答えを提供すると思いました。
私たちの主なドライバーは、xsd.exeがXSDアノテーションからXMLドキュメントを生成しないことでした。上記のすべてのツールと他のツールを試してみましたが、ほとんどは非推奨であるか、メンテナンスされていないか、VS2010で使用可能なxsd.exeの現在の機能と一致しません。
Xsd2Codeただし、優れたツールであり、積極的に保守されているようです。上記にリストされたすべての機能とそれ以上の機能を提供します-CodePlexページには、さまざまなオプションが出力にどのように影響するかの素晴らしい例もあります。
また、コンテキストメニューの統合やカスタムビルドツールを含む、緊密なVS統合も備えています(つまり、プロジェクトでXSDを参照してカスタムツールを指定すると、XSDの更新時にコードが自動的に更新されます)。全体として、多くの作業を節約できました。
私が見た他のツールの簡単な要約:
補遺:XSD2Codeを使用することにした場合、コマンドラインツールでの作業で見つかったいくつかの問題があります。特に、引数の処理にはいくつかのバグがあり、いくつかの引数を特定の順序にする必要があります。また、ドキュメント化されていない依存関係もあります(たとえば、自動パラメーターと.NETバージョンは順序に依存します)。以下は、XSD2Codeを使用してコードを生成し、出力をクリーンアップするために使用した手順です-必要に応じて適用されるビットを取得します。
次のバッチファイルを実行して初期コードを生成し、パスを正しい場所に変更します。
@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
必要に応じて、次の手順を実行して、生成されたコードを整理します。
それが誰かを助けることを願っています。
私はまだこれをチェックアウトしていませんが、 Linq2XSD は便利な代替手段かもしれません。
これを試してみます。 XSD生成を備えたLINQは、これらのツールのどれよりも優れているでしょう。
OpenSourceプロジェクト XSDからClasses は完璧に機能しました。
OxmLibraryを試す- http://oxmlibrary.codeplex.com
私は1年以上前にCodeXSを使用したプロジェクトです。いくつかのマイナーな調整(生成されたコードを少しクリーンアップするスクリプト)で、それは魅力的でした。
Dingo もあり、非常に優れた拡張機能を備えています(これは必要ありませんでした)。
私が見つけた最高のXSDクラスジェネレーターは thinktecture WSCF.blue です。次の2つの理由により、他のほとんどの製品よりも優れています。
または、T4ソリューションを探している場合は、 XsdClassGen を試すことができます。これは私のために働いていません。しかし、良いニュースは、T4ファイルであるため、簡単に修正できることです。