【问题标题】:Getting TypeLoadException when using Sqlite-WinRT使用 Sqlite-WinRT 时出现 TypeLoadException
【发布时间】:2015-07-01 16:51:14
【问题描述】:

我正在开发一个 Windows Phone 8.1 应用程序 (WinRT),我想添加对 SQLite 的支持。我已将 SQLite for Windows Phone 扩展添加到项目中,还添加了 SQLite-WinRT 包装器。我还将构建配置更改为 x86,以便它可以在模拟器中运行。 我的问题是:当我尝试打开与数据库文件的连接(创建或打开)时,我得到一个 TypeLoadException。 我打开连接的代码是这样的:

using (var db = new SQLiteWinRT.Database(ApplicationData.Current.TemporaryFolder, "Database.db"))
        {
            await db.OpenAsync(SqliteOpenMode.OpenOrCreateReadWrite);
            await db.ExecuteStatementAsync(@"create table if not exists MyTable ( ID integer not null primary key autoincrement, Name varchar(150) not null);");

            await db.ExecuteStatementAsync(@"insert into MyTable (Name) values ('Rafael');");
        }

当第一行执行时我得到这个错误:

这是我项目中的参考列表:

感谢任何帮助。谢谢大家。

【问题讨论】:

  • 这很有趣,我也有 VS2013 Update 4。但是重新安装Windows和VS是不可行的。等待更新 5 也是不可行的,因为没有数据库代码,项目就无法前进。同样使用 SQLite-Net 等其他包装器对我也不利,因为它是一个 ORM,我必须创建映射到表的类,这对于我拥有的数据库关系来说不是一个好的解决方案。

标签: c# sqlite windows-runtime windows-phone-8.1


【解决方案1】:

所以我设法解决了这个问题。它似乎是由 Visual Studio IDE 未注册 WinMD 类型并在运行时导致 TypeLoadException 引起的。 下载Visual Studio Update 5 RC(候选版本)将解决此问题。将 IDE 更新到 Update 5 大约需要 30 分钟,具体取决于您的 Internet 速度。 RC 版本非常稳定,并且可以正常工作,所以我认为它不会对您当前的项目造成任何问题。

【讨论】:

    猜你喜欢
    • 2013-10-10
    • 2011-06-27
    • 1970-01-01
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多