1

我对 MVVMCross 很陌生,但我已经在工作和学校项目中积极使用它两周了,我真的很喜欢它!不幸的是,我已经被困在学校项目上两天了:我们被要求做一个移动 Jabber 客户端。这没什么大不了的,因为我使用 Matrix XMPP 库开始它,它完成了大部分工作并且易于使用。我决定使用 MVVMCross 重新启动我的项目,以便获得更清晰的分离代码并添加一个 Windows Phone 项目,但 Matrix 绝对需要 System.Xml.Linq,而且我无法编译核心 PCL:

The type 'System.Xml.Linq.XElement' is defined in an assembly that is not referenced.
You must add a reference to assembly 'System.Xml.Linq, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'

如 Stuart Lodge 的教程视频所示,我使用的是配置文件 104,错误的 dll 确实存在于文件夹中,我无法手动将其添加到项目的引用中,因为 VS 阻止我这样做(温和地解释它是自动加载的由于 .Net 可移植子集包含在参考文献中),我已经更新并修复了我的 VS 安装“以防万一”......并且没有更多的想法了。

所以,这里有问题:

  • 真的可以将 System.Xml.Linq 与 MVVMCross 一起使用吗?还是我错过了解释我想做的是愚蠢的大标题?
  • 如果是的话(那太好了!)是否有人遇到过同样的问题?更有趣的是:有人找到解决方案了吗?

提前致谢!

附加信息:Windows8(x64)、VS2012 Ultimate、Xamarin.Android 的试用许可证(学校项目...)


更新:按照 Stuart 的回答,我编译并运行了BestSellers示例,该示例使用 System.Xml.Linq... 没有任何问题。由于它带有对System.Xml.Linq(请参阅答案中的第一个链接)的明确引用,因此我尝试了:

  1. 删除它(和其他一些):VS 坚持它的承诺,并且只要.Net Portable Subset被引用,就真正包含所需的引用,所以一切都很顺利。

  2. 通过记事本手动将此引用添加到我的.csproj :它不会改变任何东西。

在 Stuart 的回答中,有一件事让我很兴奋:“也许这与矩阵使用 XML.linq 的方式有关”。由于我尝试使用的 Matrix 类型只是 的后代,它在来自 sample的BookViewModel.csSystem.Xml.Linq.XElement中广泛使用,这可能有什么问题?


“解决方案”:问题似乎是由于 Matrix 需要一个特殊版本的System.Xml.Linq,这不是用于构建 PCL 的配置文件 104 时包含的版本。我使用文件链接方法作为一种解决方法来共享核心,这很有效,尽管这不太优雅、可读性和难以维护......

4

1 回答 1

1

是的,至少可以使用一些 System.Xml.Linq

例如,请参阅 BestSellers 示例

对于您看到的问题,我真的不确定错误是什么 - 也许这与矩阵使用 XML.linq 的方式有关?您可能会更幸运地向其他标签(如便携式类库、XML-linq 和 windows-phone)提出这个问题。

于 2013-06-18T06:10:05.337 回答