我一直在把头撞到墙上,我希望有人能对下面的代码可能出现的问题提供一些建议。
我有一个项目,我正在 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 和我正在阅读的各种论坛和网站上的其他人似乎可以正常工作,所以我想知道我错过了什么。有人可以帮忙吗?