应用程序在模拟器中工作,但在部署中提供“无法解决错误”

时间:2012-12-08 15:59:58

标签: .net ios mono xamarin.ios monodevelop

因此,当我尝试构建部署到物理设备时,我的iPhone MonoTouch应用程序会抛出以下错误。

Error MT2002: Could not resolve: System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a (MT2002) (IcondySingleView)

它在模拟器中完美运行。

对system.configuration的引用位于dll中。

我在编译期间也有这个警告,MYModel.dll包含对system.configuration的依赖。

Warning MT0011: MYModel.dll was built against a more recent runtime (NET_4_0) than MonoTouch supports. (MT0011) (IcondySingleView)

为什么它会在模拟器中构建和运行,而不是在部署到设备中。我可以在某处进行相同的设置。

1 个答案:

答案 0 :(得分:3)

  

无法解决:System.Configuration

MonoTouch提供基于Silverlight(2.1)配置文件的配置文件以及许多附加功能。此个人资料包含System.Configuration - 无论如何对设备没有多大意义。

  

警告MT0011:MYModel.dll是针对更新的运行时(NET_4_0)而构建的

MonoTouch目前(计划于2013年春季推出)也不支持.NET 4.0配置文件。有些事情可能有用,但总的来说,你会找到不允许你构建应用程序的缺失成员。

  

为什么它会在模拟器中构建和运行,而不是在部署到设备中。

为什么可能在模拟器上运行?那是因为它使用 JIT 。即时编译意味着错误将在运行时发生(如果使用缺少类型/成员的代码路径被命中)。

为什么 会因设备而失败?这是因为不允许使用JIT,我们使用 AOT 编译器。这意味着所有内容都是提前编译所以任何缺少的东西都会导致错误。

  

我可以在某处进行相同的设置。

是的,您需要针对MonoTouch随附的SDK程序集重建所有程序集。这将确保仅在程序集中引用可用的类型/成员。反过来,这意味着一切都保证在构建/运行时可用。