1

xsd.exe (.NET SDK で提供されるもの) と Xsd2Code ( http://xsd2code.codeplex.com/ ) を使用したコード生成に問題があります。

XSDファイルの次のセットアップがあります:

  • 共通.xsd
  • 概要.xsd
  • 詳細.xsd

Common は、Summary と Detail の両方で使用されるいくつかのタイプを定義するため、Summary と Detail の両方に line が含まれます<xs:include schemaLocation="Common.xsd" />

私が試したすべての XSD コード生成ツールの問題は、トップ レベルの型 (Summary/Detail) を持つ XSD ファイルのみを取得し、1 つの名前空間にクラスを作成することです。

これに関する問題は、これらのツールを使用すると、Common.xsd 内のすべてのタイプ (Namespace.Summary.CommonType および Namespace.Detail.CommonType) の正確なコピーが 2 つ得られることです。コードでそれらを使用したいときは、常にそれらの間で変換する必要があります (基本的にはすべての値をコピーするだけです)。これは非常に面倒で、かなりのオーバーヘッドと混乱につながります。

インクルードをより適切に処理する XSD コード生成ツールはありますか (つまり、インクルードされた型を独自の名前空間に入れ、一度だけ生成します)?

4

3 に答える 3

1

Xsd2Code はこのシナリオを処理します。名前空間を指定して、各 xsd ファイルに対してコマンドの複数のパスを実行するだけです。

xsd2code Common.xsd MyNamespace MyNamespace\Common.cs
xsd2code Summary.xsd MyNamespace MyNamespace\Summary.cs /eit+
xsd2code Detail.xsd MyNamespace MyNamespace\Detail.cs /eit+

各 xsd ファイルは、独自のソース コード ファイルに生成されます (オプションで異なる名前空間に)。/eit+ スイッチは、xsd2code が含まれているスキーマ タイプをそのファイルに生成しないことを示します。

于 2012-04-25T13:26:32.170 に答える
1

コマンドラインですべての XSD ファイルをリストするようにしてください。これにより、ケースに当てはまらないことが期待されるいくつかのシナリオを除いて、すべての問題が修正されるはずです。

この投稿を見てください。これもSOで、何をする必要があるかを正確に示しています。

于 2012-04-25T13:08:16.923 に答える