我们有一个利用Xamarin Forms的UWP应用程序。它通过这个.NET标准库使用SQLite:
https://github.com/MelbourneDeveloper/SQLite.Net.Standard(这是我的库,是https://github.com/oysteinkrog/SQLite.Net-PCL)的分支
SQLite在调试模式下工作正常,并且在为.NET Native编译时也能正常工作。我相信我们通过像这样的Visual Studio插件引用物理C sqlite3库文件:
但是,当我们尝试将其上传到商店时,我们会收到以下一系列错误消息:
不支持libsqlite3_for_net.dll中的API sqlite3_backup_finish 对于此应用程序类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_backup_init 这种应用类型。 SQLite.Net.Standard.dll调用此API。
libsqlite3_for_net.dll中的API sqlite3_backup_pagecount不是 支持此应用程序类型。 SQLite.Net.Standard.dll调用 这个API。
libsqlite3_for_net.dll中的API sqlite3_backup_remaining不是 支持此应用程序类型。 SQLite.Net.Standard.dll调用 这个API。
不支持libsqlite3_for_net.dll中的API sqlite3_backup_step 这种应用类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_bind_blob 这种应用类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_bind_double 这种应用类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_bind_int 这种应用类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_bind_int64 这种应用类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_bind_null 这种应用类型。 SQLite.Net.Standard.dll调用此API。
libsqlite3_for_net.dll中的API sqlite3_bind_parameter_index不是 支持此应用程序类型。 SQLite.Net.Standard.dll调用 这个API。
不支持libsqlite3_for_net.dll中的API sqlite3_bind_text16 这种应用类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_busy_timeout 对于此应用程序类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_changes 这种应用类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_close 申请类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_column_blob 这种应用类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_column_bytes 对于此应用程序类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_column_count 对于此应用程序类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_column_double 对于此应用程序类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_column_int 这种应用类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_column_int64 对于此应用程序类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_column_name16 对于此应用程序类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_column_text16 对于此应用程序类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_column_type 这种应用类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_config 申请类型。 SQLite.Net.Standard.dll调用此API。
libsqlite3_for_net.dll中的API sqlite3_enable_load_extension不是 支持此应用程序类型。 SQLite.Net.Standard.dll调用 这个API。
不支持libsqlite3_for_net.dll中的API sqlite3_errmsg16 这种应用类型。 SQLite.Net.Standard.dll调用此API。
libsqlite3_for_net.dll中的API sqlite3_extended_errcode不是 支持此应用程序类型。 SQLite.Net.Standard.dll调用 这个API。
不支持libsqlite3_for_net.dll中的API sqlite3_finalize 这种应用类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_initialize 这种应用类型。 SQLite.Net.Standard.dll调用此API。
libsqlite3_for_net.dll中的API sqlite3_last_insert_rowid不是 支持此应用程序类型。 SQLite.Net.Standard.dll调用 这个API。
libsqlite3_for_net.dll中的API sqlite3_libversion_number不是 支持此应用程序类型。 SQLite.Net.Standard.dll调用 这个API。
不支持libsqlite3_for_net.dll中的API sqlite3_open 申请类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_open16 申请类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_open_v2 这种应用类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_prepare16_v2 对于此应用程序类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_reset 申请类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_shutdown 这种应用类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_sleep 申请类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_sourceid 这种应用类型。 SQLite.Net.Standard.dll调用此API。
不支持libsqlite3_for_net.dll中的API sqlite3_step 申请类型。 SQLite.Net.Standard.dll调用此API。
libsqlite3_for_net.dll中的API sqlite3_win32_set_directory不是 支持此应用程序类型。 SQLite.Net.Standard.dll调用 这个API。
所以,我的问题是:为什么微软会拒绝这个?
从四处查看,似乎我们可能使用了错误版本的sqlite 3库。但是,我们应该使用哪一个? Xamarin是否有特定的?为什么包吐出一个名为libsqlite3_for_net.dll的文件?为什么不只是sqlite3.dll?
是否有关于如何将SQLite导入Windows应用商店中的应用的文档?
答案 0 :(得分:1)
问题是libsqlite3_for_net.dll仅适用于iOS。从共享代码中删除该dll的DllImport,以便在没有该DLL可用的平台上不需要dll。