私の目標は、インポートを含む埋め込みxsdをDataSetにロードし、xsdに基づいてテーブルを生成することです。DataSetへのインポートを含む組み込みXSDのロード
インポートされた複数のXSDファイルからなるXMLスキーマを使用してDataSetをロードしようとしています。ファイルシステム上にあるファイルでこれを行うことは問題ありません。私はそれをメインのxsdファイルに渡し、すべてが正常にロードされ、すべてのxsdのインポートが解決されます。私がしたいことは、xsdを自分のdllに埋め込んで、ファイルシステム上に座っていないことです。 xsdファイルが埋め込まれているプロジェクトは、xsdファイルにアクセスしてDataSetにロードするプロジェクトとは別のプロジェクトです。
DataSet.ReadXmlSchemaメソッドは、ストリーム、XmlReader、文字列uri、またはXmlTextReaderのいずれかを使用できます。私はDLLをロードして、メインのスキーマファイルにassembly.GetManifestResourceStream(schemaPath)を使用しても問題はありません。これは、自分のスキーマが1つのファイルであれば問題ありません。問題は、これをDataSet.ReadXmlSchemaメソッドに渡すと、インポートを見つけることができなくなることです。
XmlReaderを使用し、XmlReaderSettingsオブジェクトをカスタムxmlリゾルバで使用しようとしましたが、これまでの問題について書かれていました。過去にカスタムxmlリゾルバを使用して、同様のスキーマをDLLに埋め込んでXmlSchemaSetにロードしていましたが、それは魅力的でした。したがって、私はXmlReader.Create呼び出しを作成するときに、自分のカスタムXmlリゾルバを使用するXmlReaderSettingsを渡しますが、このXmlReaderをDataSet.ReadXmlSchemaメソッドに渡すと、インポートされたスキーマファイルも見つからない可能性があります。私はオーバーロードされたGetEntityメソッドにブレークポイントを設定し、決してヒットしません。したがって、XmlReaderは私が提供したXmlResolverを使用していないようです。私はXmlTextReaderと同じ問題がありました。
埋め込みスキーマを読み込んでデータセットに読み込む方法についてのアイデアはありますか?私の最後の手段は、埋め込まれたxsdファイルをファイルシステムに一時的にコピーしてDataSetを作成してから削除することですが、これを避けようとしています。
残念ながら、私はあなたが正しいと思います。確認していただきありがとうございます。 – user817722