使用RELEASE构建MonoTouch的SQLite - 无法获得PK?

时间:2013-03-27 07:11:54

标签: c# sqlite mono xamarin.ios

我一直在使用Monotouch并使用Debug构建整个项目。我最近更改了它以发布构建以运行它并且它在启动时崩溃了。打开调试符号我发现问题是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
}
当我尝试插入()数据库中RealConfigData没有PK的第一个时,我收到错误!但事实确实如此。

对于第二个,我得到"找不到方法'种子'"

WTF,似乎在编译RELEASE时,元数据不在那里,或者更准确地说,是不可靠的......似乎它发现第二类的PK很好,但无法和#39; t为第一个...然后它无法找到该领域的吸气剂......这太疯狂了。

此代码在运行debug时运行正常。

这里的地球可能出错了什么?

我准备好发布我的iPhone应用程序,除了SQLite在最后一分钟打倒我。救命啊!

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

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

事实并非如此,该课程正在吃掉这个例外。

1 个答案:

答案 0 :(得分:3)

想出来......

找到了这个:http://forums.xamarin.com/discussion/276/reflection-on-type-in-dll-allways-returns-propertyinfo-canwritefalse

基本上,如果要对属性进行反射,则关闭iOS构建设置中的“链接所有装配”。 (否则,它会删除所有设置者)

这可能花了我很多年才弄明白我是不是偶然发现了......: - (