4

我一直在使用 Monotouch 并为整个项目使用调试版本。我最近将它更改为发布版本来运行它,它在启动时崩溃了。打开调试符号我发现问题是 SQLite 抛出了一个(伪造的?)异常:“无法更新 RealConfigData 它没有 PK!”

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
}

当我尝试 .Insert() 数据库中 RealConfigData 没有 PK 的第一个时,我遇到了错误!然而,确实如此。

对于第二个,我得到“找不到'种子'的获取方法”

WTF,似乎在编译 RELEASE 时,元数据不存在,或者更准确地说,不可靠......似乎它找到了 2nd class 的 PK 就好了,但不能为第一个..然后它找不到该领域的吸气剂……这太疯狂了。

并且此代码在运行调试时工作得很好。

到底有什么可能是错的?

我已经准备好发布我的 iPhone 应用程序,但 SQLite 在最后一刻对我不利。帮助!

==== 这是一个错误的陈述:

更新:我的另一个没有子类的类可以正常工作!所以它与父/子关系有关。

这不是真的,那个类被吃掉了例外。

4

1 回答 1

3

弄清楚了...

发现这个: http: //forums.xamarin.com/discussion/276/reflection-on-type-in​​-dll-allways-returns-propertyinfo-canwritefalse

基本上,如果您想对属性进行反射工作,您可以在 iOS 构建设置中关闭链接所有程序集。(否则,它会删除所有设置器)

如果我没有偶然发现的话,这可能需要我很长时间才能弄清楚...... :-(

于 2013-03-27T23:09:14.760 回答