我一直在把头撞到墙上,我希望有人能对下面的代码可能出现的问题提供一些建议。
我有一个项目,我正在 Linux 上的 MonoDevelop 4.0.9 中使用 Mono 3.0.7 开发,该项目的目标是 .NET 3.5。
我需要处理一个 XML 文件,所以我想使用 Linq to XML 来更轻松地处理 XML 文件。我在生成 XML 并将其写入文件时没有任何问题。但是,当我尝试从文件中读取内容时,Mono 因 SIGSEGV 错误而崩溃。
例如,我想尝试这样的事情:
//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>
...我自己的图书馆...
在(包装器运行时调用) <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。这通常表明
单声道运行时或本机库之一中的致命错误
由您的应用程序使用。
==================================================== ================
当我做这样简单的事情时,我什至得到同样的错误:
IEnumerable acctsList = indexFile.Descendants("Account");
foreach(acctsList 中的 XElement acctElmnt)
{
字符串测试 = acctElmnt.Attribute("AcctID").Value;
}
我尝试将 XMLReader 放在 using 语句中并将 XMLReader 传递给 XDocument.Load 方法,但这也无济于事。我不知道这是否相关,但这是在我调试代码并单步执行时发生的。
我已经在谷歌上搜索了几个小时,绞尽脑汁尝试一切,但我不知道如何让它发挥作用。Mono 网站说它支持所有 Linq to XML 和我正在阅读的各种论坛和网站上的其他人似乎可以正常工作,所以我想知道我错过了什么。有人可以帮忙吗?