私はこれについて壁に頭をぶつけていました。誰かが親切に、以下のコードで何が問題になっているのかについてアドバイスをくれることを願っています.
Linux 上の MonoDevelop 4.0.9 で Mono 3.0.7 を使用して開発しているプロジェクトがあり、プロジェクトは .NET 3.5 を対象としています。
XML ファイルを処理する必要があるため、Linq to XML を使用して XML ファイルの操作を簡単にしたいと考えています。XML の生成とファイルへの書き込みに問題はありません。しかし、ファイルから読み込もうとすると、SIGSEGV エラーで Mono がクラッシュします。
たとえば、次のようなことを試してみたいと思います。
//Load the document
XDocument indexFile = XDocument.Load(indexFilePath);
foreach (XElement acctElement in indexFile.Descendants("Account"))
{
AcctCls acct = new AcctCls(acctElement.Attribute("AcctID").Value);
AcctsList.Add(acct);
foreach (XElement regionElement in acctElement.Descendants("Region"))
{
RegionCls region = new RegionCls(regionElement.Attribute("Region").Value);
acct.RegionsList.Add(region);
}
}
これを .NET Framework で実行してみましたが、問題なく動作するようです。ただし、これを Mono で実行すると、次のエラー メッセージが表示されます。
スタックトレース: <不明> <0xffffffff> で ...自分のライブラリ... at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <IL 0x00050, 0xffffffff> ネイティブ スタック トレース: /usr/bin/mono() [0x4ae331] /usr/bin/mono() [0x503b8b] /usr/bin/mono() [0x4226b2] /usr/lib/libpthread.so.0(+0xf830) [0x7f4f68629830] /usr/bin/mono() [0x4d00d9] /usr/bin/mono() [0x4d5049] /usr/bin/mono() [0x4d5741] /usr/bin/mono() [0x4d583f] /usr/bin/mono() [0x4d67b5] /usr/bin/mono() [0x4d75fc] /usr/bin/mono() [0x4caeea] /usr/bin/mono() [0x4cb03e] ================================================== =============== ネイティブ コードの実行中に SIGSEGV を取得しました。これは通常、 mono ランタイムまたはネイティブ ライブラリの 1 つでの致命的なエラー アプリケーションで使用されます。 ================================================== ===============
次のような単純なことをすると、同じエラーが発生します。
IEnumerable acctsList = indexFile.Descendants("アカウント"); foreach(acctsList 内の XElement acctElmnt) { 文字列テスト = acctElmnt.Attribute("AcctID").Value; }
XMLReader を using ステートメントに入れ、その XMLReader を XDocument.Load メソッドに渡そうとしましたが、どちらも役に立ちません。これが関連しているかどうかはわかりませんが、コードをデバッグしてステップ実行しているときに発生しています。
私は今数時間グーグルをしており、すべてを試して頭を悩ませていますが、これを機能させる方法がわかりません。Mono の Web サイトでは、Linq to XML のすべてをサポートしていると書かれており、私が読んでいるさまざまなフォーラムやサイトの他の人々は、これがうまく機能しているように見えるので、何が欠けているのか疑問に思っています。誰でも助けることができますか?