表仅在实际设备上没有(公共)列

Dan*_*rly 16 c# iphone ios xamarin sqlite-net

我有最简单的应用程序,我以为在我全神贯注之前我会在我的设备上尝试.但是,当我在iPhone上运行它时,我收到了最奇怪的错误消息(与我的macbook上的模拟器相关).

表没有(公共)列.

我正在使用SQLite.Net PCL,我已经从git hub构建了它,因为我遇到了一些问题,否则没有IOS的平台dll.

相关代码.

在我的模型中我有这个:

public class Setting
{
    [PrimaryKey, AutoIncrement]
    public long Id { get; set; }

    [Indexed]
    public string Key { get; set; }

    public string Value { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

抛出此错误消息的代码很简单:

using (SQLiteConnection db = GetCon ()) {

            db.CreateTable<Setting> ();
}
Run Code Online (Sandbox Code Playgroud)

但在我看来,最奇怪的是这个代码在模拟器上工作正常,但崩溃了iphone本身的应用程序.

如果有人有一些想法会很棒.

编辑:此错误在此文件行380 上的SQLite.Net-PCL库上引发,但在设备上而不在模拟器上.

Dan*_*rly 10

对于其他可能关注的人,我找到了问题的答案.问题是Type没有任何属性(有问题的类型是简单模型类).知道这是垃圾我发现以下链接提供了更多信息,我将在这篇文章中涉及到链接已经死亡:

Type.GetProperties什么都不返回

注意:小心装配链接器

如果您在启用链接器的情况下构建,则可能需要在某处使用该类,因此在编译时不会被删除.有时,仅在代码中实例化类是不够的,链接器可能会检测到实例从未使用过,并且无论如何都会将其删除.

http://developer.xamarin.com/guides/ios/advanced_topics/linker/

可以通过"项目选项"中的链接器行为下拉列表自定义链接过程.要访问此项,请双击iOS项目并浏览到iOS Build> Linker Options,如下图所示(有关详细信息,请参阅链接)

我现在已经将它取消链接了,但是,我会在发布之前尝试让链接器忽略这些类.感谢你的帮助.