【问题标题】:Unable to use System.XML.Linq无法使用 System.XML.Linq
【发布时间】:2012-12-18 00:20:43
【问题描述】:

我正在开发一个使用 Mono for Android 的项目。使用 Xamarin 阅读跨平台文档后。我将我的数据层放在一个单独的项目中,并将其移动到我的 Mono for Android 项目,然后将这些文件链接到我的 Mono Touch 项目,有一天可能会是一个 Windows Phone 8 项目。

当我移动代码时,由于 System.Xml.Linq 引用,我现在无法编译。该参考显示在 Mono for Android 项目中,但我无法使用它。我认为瞄准 Froyo 可能是个问题,但将项目升级到 Gingerbread 或 Ice Cream Sandwich 并没有帮助。

有人知道我做错了什么吗?我是一位经验丰富的 .NET 开发人员,并且非常了解引用在项目中的工作方式,但是这个让我很难过。

原始代码正在处理的项目是针对 Mono/.NET 4 框架

【问题讨论】:

    标签: xamarin.android monodevelop


    【解决方案1】:

    您对 System.Xml.Linq 的引用是指向 .Net 版本还是 Mono 版本? Mono 的版本为 2.0.5.0。

    此外,它是对 Android 类库/应用程序或常规 .Net 类库中的 System.Xml.Linq 的引用。如果它是一个 .Net 类库,我会尝试将您的 Android 应用程序中的库作为已编译(dll)引用而不是项目引用来引用。这不是一个完美的解决方案,但我发现当我需要引用跨多个解决方案使用的库时,这很有效。该参考通常可以正常工作,但如果 Mono 版本不支持任何内容,则可能会导致问题。

    假设您的代码在类库中,最好的选择可能是创建库项目的 Mono 特定版本。您可以导入和使用相同的类文件,但只需添加一些条件编译符号即可使其为 Mono 正确编译。如果您对此不熟悉,请查看Json.NetServiceStack 如何管理多个平台的代码。

    【讨论】:

    • 我在一个单独的项目文件中设置了代码,之前该文件针对的是 Mono/.NET 4.0 框架。我可以把它移回那里然后忘记它吗?它会导致 Mono for Android 版本出现问题吗?代码在 Mono Touch 上运行良好,我使用链接来使用文件。我担心现在无法引用该项目,因为 Android 的 Mono 似乎甚至不支持 XDocument 之类的类。我已经尝试添加您提到的 Mono for Android .dll 和 Mono 框架 dll,但似乎都不起作用。也许我会把时钟拨回去,交叉手指
    • 我认为您的参考资料可能有些奇怪。适用于 Android 的 Mono 支持 XDocument,我已经在几个项目中使用它而没有问题。我可能会建议为 Android 类库项目创建一个新的 Mono 并将您的类添加到该项目中。也许有一个旧的引用指针挂在周围。此外,请仔细检查您的项目引用并确保它们也指向 Mono 版本。默认的 Mono System.Xml.Linq 位于 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Xml.Linq.dll 。
    • 哇...所以我应该补充一点,我正在将这些文件链接到 Mono Touch 项目。 Mono Touch 项目没有 System.Xml.Linq 的参考。谈论一个菜鸟的错误。当我添加对 Mono Touch 项目的引用时,它编译得很好。我被 Mono for Android 项目中弹出的错误欺骗了。迈克,谢谢你帮我解决了这个问题。当我得到更好的代表时,我会投票。
    猜你喜欢
    • 1970-01-01
    • 2015-06-24
    • 2013-09-16
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多