我用来查询XElement的方法适用于Windows,但不适用于Xamarin Android:
using System.Xml;
using System.Xml.Linq;
using System.Linq;
public string ValidateLicense()
{
XElement xEl;
string sMessage;
Model.clsWebServiceFunctions cSvc = new Model.clsWebServiceFunctions();
sMessage = cSvc.QueryWEB_ValidateLicense();
xEl = cSvc.ServiceGetData(clsSettings.LicensingUrl, sMessage);
var vResult = from results in xEl.DescendantsAndSelf("Result")
select results;
return vResult.First().Element("LicensingResult").Value;
}
我得到的信息是
方法
'First' not found in type
' IEnumerable' 1'
这似乎是由于Xamarin不支持这种方法?!
我在我的应用程序中做了很多类似的查询,所以有人可以推荐一种可以在Xamarin中使用的替代方案吗?我可以提出这个但不知道一个好的解决方案。
答案 0 :(得分:1)
我在iOS上遇到了类似的问题。
这似乎是Linq扩展方法无法加载IEnumerable的问题。
MvvmCross中出现错误,该错误旨在与Xamarin支持的移动平台协同工作。在部署新应用程序时,最初不会出现此问题,需要一些时间才能显示,即执行几天开发,尝试在模拟器上再次运行。
因此我认为这是与Xamarin的链接问题。 [编辑]:不再了,见下文。
http://forums.xamarin.com/discussion/19483/pcl-linq-problem-on-ios-vs2013-sp2 - 这里没有答案。
[编辑] 好的,所以我引用了一个NET FX 3.5 DLL。将引用的程序集更改为NET 4.0似乎可以解决问题。 请注意,在app输出中,您可以在启动时看到此信息。这很糟糕:
Loaded assembly: /Users/mike/Library/Caches/Xamarin/mtbs/builds/XamTestTouch2/7da682ee-1ab5-4b07-b745-c3c558a10329/assemblies/System.Core.dll [External]
这很好:
Loaded assembly: /Developer/MonoTouch/usr/lib/mono/2.1/System.Core.dll [External]
您可能需要在修复引用后删除Caches / Xamarin / mtbs / builds / AppName / GUID00-00000-0000 ..文件夹以使其重新运行。