アプリケーションにXMLリソースを埋め込んでいますが、XSDファイルの読み込みは機能しますが、XMLファイルの読み込みは機能しません。これがXSDファイルをロードする方法です。
private static XmlSchema LoadXsdResource(string folder, string xsdName)
{
string filename = string.Format("Namespace.{0}.{1}.xsd", folder, xsdName);
using (Stream stream = Assembly.GetCallingAssembly().GetManifestResourceStream(filename))
{
return XmlSchema.Read(stream, (o, e) =>
{
log.Warn(string.Format("Napaka pri parsanju XSD sheme {0}: {1}: {2}", e.Severity, e.Message, filename));
});
}
}
他の場所でXMLをロードします。
XDocument xdoc = XDocument.Load(Assembly.GetCallingAssembly().GetManifestResourceStream("Namespace.Resources.Oddaja.xml"));
これも機能しますが、コンパイルされたアセンブリを実行した場合に限ります。デバッガーで実行すると、NullReferenceException
から取得しGetManifestResourceStream()
ます。
だから私はそれを名前空間で台無しにしましたよね?いいえ、チェックしてダブルチェックしました。名前空間は正しいですが、そうでない場合は、実行中のアセンブリで例外が発生します。(例外が発生するたびにログに記録します)また、.NET Reflectorを再確認して、期待する名前のリソースが実際に存在することを確認しました。
また、トリプルチェックを行い、Build Action
がに設定されていることを確認しましたEmbedded Resource
が、何も機能しませんでした。デバッガーの外部でexeを実行すると正常に動作し、XMLをイベント印刷できます。ただし、デバッガーで実行すると、nullが返され、プログラムがクラッシュします。
GetManifestResourceStream()
デバッグ時にのみnullを返す原因は何ですか?