C# SQLite发布版本为MonoTouch-Can';你没有得到PK吗?
我一直在使用Monotouch,并在整个项目中使用调试构建。我最近把它改成了发行版来运行它,它在启动时崩溃了。打开调试符号后,我发现问题在于SQLite抛出了一个(伪造的?)异常: “无法更新RealConfigData,因为它没有PK!” 尝试插入数据库中RealConfigData没有PK的第一个时出错!然而,确实如此 对于第二个,我得到了“找不到‘Seed’的Get方法” WTF,似乎在编译发布时,元数据不存在,或者更准确地说,不可靠。。。它似乎发现第二节课的PK很好,但第一节课却没有。。然后它就找不到一个领域的获得者。。。这太疯狂了 当运行调试时,这段代码运行得很好 这里到底有什么可能出错 我已经准备好发布我的iPhone应用程序,除了SQLite在最后一分钟对我发起攻击。救命啊 ==这是一个错误陈述: 更新: 我的另一个没有子类的类工作正常!因此,它与父母/子女关系有关 这不是真的,那个类的异常被吃掉了。解决了 我们发现: 基本上,如果要让反射对属性起作用,可以在iOS构建设置中关闭“链接所有程序集”。(否则,它将删除所有设置器)C# SQLite发布版本为MonoTouch-Can';你没有得到PK吗?,c#,sqlite,mono,xamarin.ios,C#,Sqlite,Mono,Xamarin.ios,我一直在使用Monotouch,并在整个项目中使用调试构建。我最近把它改成了发行版来运行它,它在启动时崩溃了。打开调试符号后,我发现问题在于SQLite抛出了一个(伪造的?)异常: “无法更新RealConfigData,因为它没有PK!” 尝试插入数据库中RealConfigData没有PK的第一个时出错!然而,确实如此 对于第二个,我得到了“找不到‘Seed’的Get方法” WTF,似乎在编译发布时,元数据不存在,或者更准确地说,不可靠。。。它似乎发现第二节课的PK很好,但第一节课却没有。。
如果不是我偶然发现的话,我可能会花很多时间去弄明白…:-(好奇,你编辑了它,删除了我的名字/签名,最后是三点对一点…我说谢谢…放在里面被认为是错误的吗?是的,这是一个规则,通常如此。(但不是我)您是否尝试过将
Id
移动到RealConfigData
而不是基类?是的,事实上,我完全删除了类层次结构。我注意到一个关于在iOS注册的类中使用泛型的警告,并满怀希望地清理了它,这导致了随机崩溃……不走运。您让我免于多年的绊倒!
public class RealConfigData
{
[AutoIncrement, PrimaryKey]
public int Id { get; set; }
// .. Other fields
}
public class GameData
{
[AutoIncrement, PrimaryKey]
public int Id { get; set; }
public int Seed {get;set;}
// .. Other fields
}