首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Windows 8.1 Silverlight应用程序和WinRT运行时组件中使用WinRT

如何在Windows 8.1 Silverlight应用程序和WinRT运行时组件中使用WinRT
EN

Stack Overflow用户
提问于 2015-08-04 19:02:19
回答 2查看 531关注 0票数 2

我有一个情况,我有一个Windows 8.1应用程序,我想使用一个Windows运行时组件作为后台任务。在这两个项目中,我都希望使用SQLite访问应用程序数据库。

我在这里发现了一个类似的问题:

How to use SQLite in Windows (Phone) 8.1's BackgroundTask

这几乎涵盖了形势,但并不完全是这样。对于如何实现我所要求的,有什么想法吗?

我可以非常“接近”,我在编译阶段得到的最新错误消息如下:

Payload contains two or more files with the same destination path 'sqlite3.pdb'. Source files: C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\ExtensionSDKs\SQLite.WP80\3.8.11.1\Redist\Debug\ARM\sqlite3.pdb C:\Program Files (x86)\Microsoft SDKs\WindowsPhoneApp\v8.1\ExtensionSDKs\SQLite.WP81\3.8.11.1\Redist\Debug\ARM\sqlite3.pdb

我看到了其他这类错误的解决方案,就是简单地在其中一个引用上将Copy设置为false,但我不认为这在这种情况下是可能的,因为这两者实际上都是必需的。

提前感谢!

更新1:使用下面scottisafool的建议,我已经从SQLite SDK文件夹中删除了pdb文件,这使我更进一步,即它至少现在编译了。然而,我遇到了另一个问题.

然后,我开始在后台任务中突出访问数据库的代码,在跳过了一些“非有效WinRT类型”的循环之后,我已经到了一个全部编译的地步,看起来它应该可以工作。但是,当我尝试运行应用程序,并运行之前运行良好的代码(即在应用程序首次加载时创建数据库)时,我会遇到以下错误:

The specified module could not be found. (Exception from HRESULT: 0x8007007E)

使用以下堆栈跟踪:

at System.StubHelpers.StubHelpers.GetWinRTFactoryObject(IntPtr pCPCMD) at Sqlite.Sqlite3.sqlite3_open_v2(String filename, Database& db, Int32 flags, String zVfs) at SQLite.Net.Platform.WindowsPhone8.SQLiteApiWP8.Open(Byte[] filename, IDbHandle& db, Int32 flags, IntPtr zVfs) at SQLite.Net.SQLiteConnection..ctor(ISQLitePlatform sqlitePlatform, String databasePath, SQLiteOpenFlags openFlags, Boolean storeDateTimeAsTicks, IBlobSerializer serializer, IDictionary`2 tableMappings, IDictionary`2 extraTypeMappings, IContractResolver resolver) at SQLite.Net.SQLiteConnection..ctor(ISQLitePlatform sqlitePlatform, String databasePath, Boolean storeDateTimeAsTicks, IBlobSerializer serializer, IDictionary`2 tableMappings, IDictionary`2 extraTypeMappings, IContractResolver resolver) at DatabaseContext.OnCreate(String databaseFilePath)

更新2:上面的错误消息只有在我将对Windows 8.1便携式类库(包含所有SQLite代码)的引用添加到时才会发生。必须在这一点上:

  • Windows 8.1的SQLite
  • Windows的SQLite

SDK的两者都被拉进了完整的应用程序中。在这一点上,我假设Windows 8.1引用被拉进来了,但是Windows引用没有,因为它被认为已经存在了。这是完全的猜测,但它似乎符合我所看到的。对如何进行有什么想法吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-01 12:51:00

我找到了解决办法:

只在Silverlight应用程序项目中添加对SQLite dll的引用,而在后台任务项目中不添加任何引用(WinRT运行时组件)。

SQLite.net nuget库将在运行时在app项目和后台任务项目(WinRT运行时组件)中找到dll。

票数 2
EN

Stack Overflow用户

发布于 2015-08-04 19:29:56

从nuget包中删除pdb文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31817194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档