3

スター標準によって提供される xsd スキーマからクラスを生成するために xsd2code を使用しています。

xsd.exe を使用してクラスを生成しようとしましたが、うまくいきませんでした。

「ProcessCreditApplication.xsd」からクラスを生成すると、必要なすべてのクラスを含む単一のファイルが生成されます。この時点ですべてが正常に機能します。

別の xsd、ConfirmBOD.xsd を生成すると、両方のファイルに同じ基本クラスが含まれているため、あいまいなエラーが発生します。

たとえば、両方のファイルが「説明」クラスを生成します。両方のファイルが同じネームスペースにあるため、同じネームスペース内の 2 つのクラスの間にあいまいさが生じます。

サブクラスが重複しないように、複数の xsd からクラスを生成する方法はありますか?

この問題を回避するための唯一の考えは、生成された各ファイルを独自の名前空間に配置することです。これは理想的ではありませんが、機能します。

xsd.exe は乗算可能なファイルを使用するように思われるため、使用したいと考えていますが、生成されるコードは私のニーズには合いません。

更新 Linq を xsd に試してみましたが、うまくいきませんでした。同じタイプが「すでに宣言されている」と不平を言いました。

参考までに:スキーマを取得する場所は次のとおりです。

http://www.starstandard.org/SIGXMLSTAR4/XMLSchemas http://www.starstandard.org/uploads/SIGXMLSTAR4/STARSchemaRepository_Rev444.zip

4

4 に答える 4

1

私は、実際には次の 2 つの選択肢しかないと考えています。

  1. 生成されたファイルごとに異なる名前空間を使用します。
  2. すべてのタイプに一意の名前を付けます (おそらく、状況のオプションではありません)。

考えてみれば、生成された各ファイルは、実際には 1 つのクラスではなく一連のクラスであるため、それぞれに独自の名前空間を与えることは理にかなっています。

于 2010-09-10T21:37:25.877 に答える
1

「含まれるタイプを除外する」チェックボックスが追加されたので、もう問題ありません。

于 2014-07-15T13:59:00.270 に答える
1

xsd.exe の使用にも問題がありました。Microsoft の LinqToXsd プロジェクトを使用して、XSD ファイルから C# コードを生成することに成功しました。非常に複雑な XSD ファイルで試したことはありませんが、試してみてください。

LinqToXsd プロジェクトはCodePlexのオープン ソースです

コマンド ラインの使用構文は次のとおりです。

LinqToXsd <schemaFile> [one or more schema files] [/fileName:<csFileName>.cs] [/lib:<assemblyName>] [/config:<configFileName>.xml] [/enableServiceReference] [/nameMangler2]
于 2010-09-10T21:23:37.207 に答える
1

LinqToXsd 名前空間の構成には、追加の XML ファイルを使用できます。

mognessによるhttp://blog.mogness.com/?p=36

<?xml version="1.0" encoding="utf-8" ?>
<Configuration xmlns="http://www.microsoft.com/xml/schema/linq">
  <Namespaces>
    <Namespace Schema="http://www.Schema1" Clr="My.Schema1"/>
    <Namespace Schema="http://www.Schema2" Clr="My.Schema2"/>
    <Namespace Schema="" Clr="My"/>
  </Namespaces>
</Configuration>

ehoscaによる Visual Studio とのスムーズな統合に関する追加情報、http://linqtoxsd.codeplex.com/discussions/238570#PostDetailsCell_591728

XSD と同じソリューションで XML ファイルを作成し、(それを linq2xsdconfig.xml と呼びます)

linq2xsdconfig.xml のビルド アクションを次のように選択します。

@bporterLinqToXsd.exeで指摘されているように、同じ XML ファイルを に渡すこともできます。

LinqToXsd <schemaFile> /config:linq2xsdconfig.xml
于 2012-07-25T15:37:44.463 に答える