【问题标题】:Xamarin iOS Error on try debug application on iPhone 5尝试在 iPhone 5 上调试应用程序时出现 Xamarin iOS 错误
【发布时间】:2014-05-21 09:14:20
【问题描述】:

当我们尝试在设备(iPhone 5)上调试应用程序时出现错误

MT2002:无法解析“System.Linq.Expressions.BlockExpression System.Linq.Expressions.Expression::Block(System.Type,System.Collections.Generic.IEnumerable`1)”

这个标记为已解决的错误对我们没有帮助。

https://bugzilla.xamarin.com/show_bug.cgi?id=14765

【问题讨论】:

    标签: ios xamarin.ios xamarin


    【解决方案1】:

    如果您使用 System.Linq.Expressions (SLE),即使是间接使用,也需要考虑一些事项。

    1. 这需要代码生成,这在 iOS 下是不可能的。此功能是 Xamarin.iOS 上的 not supported。 SLE 是动态语言运行时 (DLR) 的一部分;

    2. 部分支持使用解释器的 SLE。这已随 Xamarin.iOS 提供了很长时间 - 但它只提供了一部分功能。遗憾的是,现有的 API 与 MS 使用的 API 并非 100% 相同,它可以 cause issues 构建时(例如使用 PCL 程序集)。这就是您收到MT2002 错误的原因(您的程序集试图覆盖一个不存在的成员)。

    3. Xamarin.iOS (7.2.1+) 的维护版本包括更好(更多功能)和 API 兼容的 SLE 解释器。

    【讨论】:

      【解决方案2】:

      您需要更改导致此问题的 Linq 语句。我曾经遇到过这个问题(我使用的是第三方数据库),不幸的是实际设备不支持 JIT,但模拟器支持。以不同的方式执行 Linq 语句。

      【讨论】:

      • 您是否更改了所有像 return persistFacilities.Select(f => f.ToCore(facility)); 这样的 linq 语句?感谢您的回复。
      • 正常的选择语句会起作用。我认为把它扔掉的是对ToCore的调用。我会使用普通的 for 循环而不是选择它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-16
      • 2022-08-19
      • 1970-01-01
      • 1970-01-01
      • 2017-10-13
      相关资源
      最近更新 更多