因此,当我尝试构建部署到物理设备时,我的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)
为什么它会在模拟器中构建和运行,而不是在部署到设备中。我可以在某处进行相同的设置。
答案 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程序集重建所有程序集。这将确保仅在程序集中引用可用的类型/成员。反过来,这意味着一切都保证在构建/运行时可用。