XSDコード生成器の比較【終了しました
質問
私は、xsdスキーマファイルからのコード生成について研究しています。 私の要求
- C# 2.0 コード (またはそれ以上) を生成する必要があり、必要に応じて汎用コレクションを使用します。
- xsdコメントからコメントを生成しなければならない
- 完全にシリアライズ可能なコードを生成しなければならない。
- 同じインクルードを持つ複数の xsd から生成する場合、再利用可能な basetypes を生成できる必要がある。
(私の他の質問も参照してください。 どのように私は共通のインクルードを持つxsdから複数のクラスを生成することができますか? と どのように私はwsdlのxs:documentationタグからコメントを生成することができますか?
私は以下のオプションを見つけました。
- xsd.exe を使用する (SDK および Visual Studio に付属しています)
- から XSDCodeGen を使用します。 Daniel Cazzulino
- Xsd2Code
- コードXS
- XsdObjectGen マイクロソフト社製
- XSDClassGen (動作していないようです)
何か見逃していたのでしょうか?なぜなら、(1), (2), (5) は 2.0 コードを生成せず、(3) からのコードのシリアライズで問題が発生するからです。コードを生成するときに何を使用しますか。
どのように解決するのですか?
私は XSD2Code は、現在 (2011年) 利用可能な最高のツールです。
私は最近、職場で利用可能なツールを分析する同じプロセスを経たので、次のことに関連する最新の回答を提供しようと思いました。 VS2010 .
私たちの主なドライバーは xsd.exe が XSD 注釈から XML 文書を生成しないことでした。これは、何百もの型定義があるため、私たちが望むことでした。 私は、上記のすべてのツールと同様に他のツールも試しましたが、ほとんどは非推奨、未メンテナンス、または VS2010 で利用できる xsd.exe の現在の機能性と一致することができませんでした。
Xsd2Code は素晴らしいツールで、活発にメンテナンスされているようです。 CodePlex のページには、さまざまなオプションが出力にどのように影響するかの素晴らしい例もあります。
また、コンテキスト メニューの統合やカスタム ビルド ツール (プロジェクトで XSD を参照し、カスタム ツールを指定すると、XSD を更新すると自動的にコードが更新される) など、VS と緊密に統合されています。 全体として、私たちは多くの作業を節約することができました。
私が見た他のツールの簡単な要約です。
- Dingo - よりJavaに近いと思われる
- XSDCodeGen - カスタムビルドツールの書き方のデモです。
- コード XS - かなり良いツールですが、統合や機能が少なく、メンテナンスもされていません。
- XSDObjectGen - メンテナンスが終了しており、現在の xsd.exe よりも機能が少ない。
- XSDClassGen - 見つかりませんでした。
- OXM ライブラリ - おすすめ このプロジェクトを見て、維持され、偉大な機能性
- XSDへのLINQ - 非常に かっこいい プロジェクトですが、私が探していたものではありません。
追記です。 もしあなたが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
必要に応じて、生成されたコードを整理するために次のステップを実行します。
- 正規表現による置き換え - 現在のプロジェクト、大文字、単語全体 [System.Runtime.Serialization.DataContractAttribute(名前:b*=:b*:q,:b 名前空間:b =:b*{:q})] with [DataContract(Namespace = \1)].
- 置換-現在のプロジェクト、ケース、単語全体-。 [System.Runtime.Serialization.DataMemberAttribute()]を参照してください。 と [データメンバ]の
- 正規表現による置換 - 現在のプロジェクト、大文字、小文字、単語全体 System.Nullable と \1\?
- 正規表現による置換 - オープンドキュメント、大文字小文字、単語全体-。 {:w}TYPE と \1
- 置換 - オープンドキュメント、大文字、小文字、単語全体 システム.日付時刻 と DateTime を追加し、足りないusing文は
- 置換 - オープンドキュメント、大文字小文字、単語全体 [System.Xml.Serialization.XmlIgnoreAttribute()] を参照してください。 と [XmlIgnore] を使用します。
- 置き換え - 現在のプロジェクト System.Xml.Serialization.XmlArrayAttribute (システム.Xml.シリアライゼーション.XmlArrayアトリビュート) を XmlArray
- 置き換え - 現在のプロジェクト System.Xml.Serialization.XmlArrayItemAttribute (システム.Xml.シリアライゼーション.XmlArrayアイテム属性) を XmlArrayItem
- 正規表現による置換 - 現在のプロジェクト ,[:Wh]+/// \<remarks/> と ,
誰かのお役に立てれば幸いです。
関連
-
[解決済み】コンパイルエラー「未割り当てのローカル変数を使用しています」が発生したのはなぜですか?
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
VSでscanfエラーを恒久的に解決するには、ソースファイルを作成し、自動的に#define _CRT_SECURE_NO_WARNINGS 1を追加してください。
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない
-
[解決済み】WebResource.axdとは何ですか?
-
[解決済み] Try-catchは私のコードをスピードアップさせるか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する