无法获得MVVMCross核心项目来引用System.Xml.Linq

时间:2013-06-17 22:39:06

标签: mvvmcross portable-class-library

我对MVVMCross很陌生,但我已经积极地使用它两周,在工作和学校项目中,我真的很享受!不幸的是,我已经被困在学校项目上2天了:我们被要求做一个移动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一起使用?还是我错过了一个大头衔,解释说我想做的事情是愚蠢的?
  • 如果是(那就太好了!)有没有人遇到同样的问题?更有趣的是:有人找到了解决方案吗?

提前致谢!

其他信息:适用于Xamarin.Android的Windows8(x64),VS2012旗舰版,试用许可证(学校项目......)


更新:按照Stuart的回答,我编译并运行了 BestSellers 示例,该示例使用System.Xml.Linq ...没有任何问题。由于它附带了对System.Xml.Linq的明确引用(请参阅first link in answer),我尝试了:

  1. 删除它(和其他几个):VS保留它的承诺,并且只要引用.Net Portable Subset就真正包含所需的引用,所以一切顺利。

  2. 通过记事本手动将此引用添加到 my .csproj:它不会改变任何内容。

  3. Stuart的回答让我感到震惊:“也许这与矩阵使用XML.linq”的方式有关。由于我试图使用的Matrix类型只是System.Xml.Linq.XElement的后代,它在 BookViewModel.cs from sample中广泛使用,可能出现什么问题?


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

1 个答案:

答案 0 :(得分:1)

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

例如,请参阅BestSellers示例

对于你看到的问题,我真的不确定错误是什么 - 也许它与矩阵使用XML.linq的方式有关?你可能有更多运气将这个问题打开到其他标签,如便携式类库,XML-linq和windows-phone。