Iphone MonoTouch类型加载异常,更新的程序未在模拟器中注册

Iphone MonoTouch类型加载异常,更新的程序未在模拟器中注册,iphone,exception,xamarin.ios,osx-snow-leopard,monodevelop,Iphone,Exception,Xamarin.ios,Osx Snow Leopard,Monodevelop,我已经安装了MonoTouch的试用版,我正在评估它的使用情况 发生了这个奇怪的错误: 无法加载“MyProductName”进行注册。这可能是由于 由模拟器保存的过期程序集,位置:/PathToMyProduct 其次是: 发生类型加载异常 我的猜测是,不知何故,某些组件不是最新的。所以我试着从给定的路径中删除它。但它仍然在那里。所以我执行了一次清除(重新安装MonoTouch,删除二进制构建路径,在模拟器路径中,从模拟器卸载,重置模拟器,最后重新启动OSX)。但它仍然在那里 有没有关于如何解

我已经安装了MonoTouch的试用版,我正在评估它的使用情况

发生了这个奇怪的错误:

无法加载“MyProductName”进行注册。这可能是由于 由模拟器保存的过期程序集,位置:/PathToMyProduct

其次是:

发生类型加载异常

我的猜测是,不知何故,某些组件不是最新的。所以我试着从给定的路径中删除它。但它仍然在那里。所以我执行了一次清除(重新安装MonoTouch,删除二进制构建路径,在模拟器路径中,从模拟器卸载,重置模拟器,最后重新启动OSX)。但它仍然在那里

有没有关于如何解决这个特殊问题的提示

问候,, Kate

该消息涵盖了发生此类异常的大多数情况。这在MonoTouch 5.0+中得到了修复(实际上我们解决了模拟器错误)(甚至更早,但我不记得确切的版本)。简单地重置模拟器就足以修复这种情况

然而,这不太可能是你所面临的情况,因为你所做的远远超过了要求

我的猜测是,该项目包括一个程序集,该程序集引用的类型在MonoTouch中不可用(例如,来自
System.Reflection.Emit
),或者根据不同版本的框架编译(例如,重用根据.NET 4.0编译的程序集二进制)。但是,这两种情况通常不会导致此错误消息,因此可能是其他原因


如果没有二进制文件,将很难进一步诊断问题。您可以在上打开错误报告(您可以将附件标记为私有)或向发送电子邮件吗support@xamarin.com(附项目)

经过一个不眠之夜和24小时的连续训练,我终于找到了答案!有一个抽象类,这个子类没有实现它的方法。因此,每当在代码中提到这个类时,它都会导致类型加载异常。MonoDevelop中没有警告,它编译得很好,运行得很好,崩溃得很厉害。太疯狂了!我已经在这个抽象方法上实现了覆盖,瞧,它现在可以正常工作了,因为什么都没有发生。这可能是MonoDevelop错误,但也可能是某些特殊的iPhone编译器中的错误。所以要意识到这一点。这是一个简单的情况:


    public abstract class Parent : UITableViewDataSource
    {
        ..fields/constructors/methods and things

        // one method overriden just fine
        public override Int32 RowsInSection(UITableView tableView, Int32 section)
        {
            return SomeReasonableResult;
        }

        // other one is made abstract, and passed to descendants
        public abstract override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath);
    }

现在,在后代类的后面:


    public class Child : Parent
    {
        // GetCell method not implemented! No error or warning in compiler, or run log!
        // but when mentioned in a different class (for example) it crashes.
    }

也许这是一种已知的行为或限制。但仍然是疯狂


我现在要睡觉了…

嗨,这个项目是用mono创建的。它仅引用monotouch、System和System.Core。它工作了一段时间。它仍然适用于少数VIEWCTRL(甚至新编程的东西也出现在其中)。但是,其中一个视图不起作用。我可以通过注释特定的行来避免类型加载错误(尽管这很重要),但我不能将其与原因联系起来,除了obj-c包没有仅为此视图更新之外。唯一奇怪的是,在运行调试会话期间,发生了对MonoDevelop(或Mono,或Monotouch,我不记得了)的更新。不幸的是,该项目是商业化的,我正在测试是否可以使用Monotouch版本(而不是Xcode/Obj-c)路线。我移植了太多(大约60%的产品来自WP7),无法向您发送二进制文件。是否有其他地方可供检查,或是否有选项/设置可供刷新/重置。正如我所说,似乎只有一个ViewController没有更新(即使其中确实出现了新的东西)。我们能在不发布二进制文件的情况下解决这个问题吗?感谢我使用的产品版本是最新版本:MonoDevelop 2.8.6.5、MonoFramework 2.10.8、MonoTouch 2.1。从错误报告开始。为这个问题添加一个链接(这样你就不必重复你自己的问题),如果可能的话,向我们展示你必须注释的代码,让它工作——这可能是一个足够的提示来解决它。嗨,再次,我已经发现了。这是MonoDevelop或MonoTouch中众所周知的行为吗?注意:显然这主要是我的错误。我错过了超控,但无论如何应该有一些检查。说真的:)我刚刚尝试在我的基类中添加了一些抽象方法,并从编译器中得到了预期的错误。然后我注意到您的代码中存在
抽象重写
(不常见),但这也导致了我代码中的编译器错误。然而,您上面的代码确实编译并抛出了一个
TypeLoadException
。确实非常奇怪。所以我真的很“幸运”上了这样一门课Dbug报告已填写@感谢您提供测试用例!谢谢你的测试用例!另外,请将此标记为已接受的答案(在stackoverflow上接受我们自己的答案是可以的),因为这使人们在搜索时,当他们看到答案可用时更容易。