uwp - 解决使用EntityFramework时报错“unable to load dll 'sqlite3':the specified module could not be found”...

原文:uwp - 解决使用EntityFramework时报错“unable to load dll 'sqlite3':the specified module could not be found”

在使用uwp的ef过程中碰到一万个问题快折腾死我了,好在最后终于解决掉所有问题,但愿如此,因为在这之前先后发生不同的报错,不知道后面还会碰到新的问题不。

其中一个问题是这样的,生成能正常生成,但是启动程序后在运行到:“db.Database.Migrate();” 时引发异常,提示unable to load dll 'sqlite3':the specified module could not be found.(exception from hresult:0x8007007e),奇怪,我已经引用了Microsoft.EntityFrameworkCore.Sqlite了呀,怎么会提示找不到模块,网上搜了一下,添加引用:“SQLite for universal windows platform”,然后运行,到这一步也许可能你已经解决这个问题,如果还没有,而且你碰到这样一个问题,以x64在本地计算机上运行uwp应用,正常,没报错,但是,切到x86放在仿真机上运行又报上面这个错,切到arm也报,那么别急,仔细看下生成输出有没有提示没引用vc++ runtime,如果有,就在引用扩展中添加“Visual C++ 2015 Runtime for Universal Window....”。现在再运行是不是解决了呢?

以下是我的完整引用截图,如果上面的方法没解决就对照一下我的引用把没有引用的引用上,MvvmLight就不需要了,其他的都是必须的:

附加:

同时引用sqlite for.platform和microsoft.en..sqlite两个的话,以ARM真机运行/调试是没问题的,但是以x86仿真机(模拟器)运行、以x64本地计算机模式运行时会报一个错:

负载包含两个或更多具有相同目标路径sqlite3.dll

对于这个问题,我暂时找不到更好的解决办法,所以,建议:如果你不介意用真机/本地计算机做开发调试并舍弃仿真机的话就不用管他,就以arm模式在真机上运行测试就好,如果你想在电脑上运行就暂时把sqlite for u....platform的引用去掉,就可以以x64的模式运行在本地计算上,但是如果开发完成要记得重新引用,不然无法在真机上创建数据库,就会重新报错:“unable to load dll 'sqlite3':the specified module could not be found.(exception from hresult:0x8007007e)”;同时引用两个时你没法在x86模式的仿真机上运行,也会提示“负载包含两个或更多具有相同目标路径sqlite3.dll”,所以,如果使用ef开发,你只能在本地计算机上/真机上测试运行,舍弃仿真机。在uwp上使用EntityFramework似乎很麻烦,也许是我自己的问题,但我的解决方案是这样的,如果我找到更好的办法会第一时间更新博客。

写的好像很乱。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中遇到 "api-ms-win-core-winrt-l1-1-0.dll" 丢失的错误,通常是因为你在尝试使用Windows Runtime (WinRT) 功能,尤其是在运行一些依赖于.NET Core或UWP应用技术的应用程序。这个特定的动态链接库 (DLL) 是Windows Runtime的一部分,可能是在安装某些更新、移除某个特定软件或在不同的环境中运行找不到。 解决这个问题的方法有: 1. **检查.NET Core安装**:确保你已经安装了正确的.NET版本,并且.NET Core SDK(特别是针对WinRT开发的部分)是完整且最新的。你可以通过命令行运行 `dotnet --info` 来查看当前安装的.NET Core版本。 2. **重新安装Visual Studio或开发工具**:如果你是使用Visual Studio或其他IDE进行开发,可能需要检查或重新安装相关的组件,尤其是Windows开发套件。 3. **修复或重装缺失的库**:尝试从Microsoft Store或官方网站搜索并安装缺失的DLL文件,或者使用系统修复工具(如sfc /scannow)来修复可能存在的系统文件损坏。 4. **环境变量设置**:确保所有必要的环境变量设置正确,特别是对于开发和运行环境的PATH,它应该包括.NET Core和WinRT库的路径。 5. **兼容性模式**:某些旧版本的应用可能需要在兼容性模式下运行,检查你的应用程序是否设置了这个选项。 如果以上方法无效,你可能需要寻求专业的开发者帮助,或者在开发者社区(如Stack Overflow)查找更详细的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值