2

因此,当我尝试构建以部署到物理设备时,我的 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)

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

4

1 回答 1

3

无法解析:System.Configuration

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

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

此外,目前(计划于 2013 年春季)MonoTouch 不支持 .NET 4.0 配置文件。有些事情可能会奏效,但通常您会发现缺少的成员不允许您构建应用程序。

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

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

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

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

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

于 2012-12-08T16:13:20.217 回答