MonoTouch 4.0使用模拟器抛出ReflectionTypeLoadException
由于将工作的MonoTouch 3.x应用程序更新为MonoTouch 4.0,因此尝试在模拟器上启动调试或发布版本时出现以下错误:
Unhandled Exception: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded.
at (wrapper managed-to-native) System.Reflection.Assembly:GetTypes (System.Reflection.Assembly,bool)
at System.Reflection.Assembly.GetTypes () [0x00000] in <filename unknown>:0
at MonoTouch.ObjCRuntime.Runtime.RegisterAssembly (System.Reflection.Assembly a) [0x00000] in <filename unknown>:0
这个问题似乎与System.Xml.Linq一样,但是我已经检查了所有的项目和引用,并且这甚至不是我可以告诉的传递引用。 我似乎没有在任何地方使用它。
异常消息始终为“无法从System.Xml.Linq加载System.Xml.Linq.XNodeNavigator”。
有人有主意吗?
根本原因是iOS模拟器只更新文件,它从不删除它们(即使您从模拟器中删除了您的应用程序)。
如果你有一些文件(例如System.Xml.Linq),并且稍后删除它们(直接或使用可以删除它的链接器),这会导致问题。 从那里你会在你的模拟器应用程序目录中有一些旧的,过时的文件。
下一个问题是MonoTouch注册目录中的所有程序集。 这意味着过时的模拟器也被注册。 在这个阶段,这可以工作(并且你不会看到错误),否则这可能会失败(因为上面的错误),因为陈旧的程序集没有包含需要正确加载的所有内容。
最简单的解决方法是重置您的iOS模拟器,它将删除所有内容(所有应用程序和所有文件)。
链接地址: http://www.djcxy.com/p/51937.html上一篇: MonoTouch 4.0 throwing ReflectionTypeLoadException using the simulator