.Net Core实践2 sqlite

目标

使用.netcore项目在Linux上运行sqlite

环境

.netcore2.1 / centos7 / win10 / vs2017 / sqlite3

sqlite库还是这个System.Data.SQLite.dll ,是.net core版本的.

下载地址http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki

sqlite数据库文件是使用sqlitestudio工具在win10上建立.然后复制到centos

问题

一.使用sqlite官方提供的.net standard库

使用Nuget包管理器下载下面版本后,运行失败,找不到sqlite库的路径

研究后发现.netcore项目将nuget下载的包统一放在了c:/user/用户名/.nuget/packages 这个目录下.

项目生成目录下的 .runtimeconfig.dev.json 文件记录了上面那个路径 .deps.json文件记录了相关的包依赖关系.仔细查看路径后,发现并没有错误.但是程序就是找不到包.

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Data.SQLite, Version=1.0.109.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139'. The system cannot find the file specified.

 

无奈之下,使用了的添加引用的传统方法.将System.Data.SQLite.dll添加引用到项目中

 

结果不报错了,但是执行SQL时失败了.日志显示找不到依赖包 

Unable to load shared library 'SQLite.Interop.dll' or one of its dependencies. 

这个dll分不同的系统平台和.net适用版本,在nuget下载的包中可以找到对应的版本

 

尝试将win64版本的.net standard2.0的该dll复制到win10系统的该项目运行目录下.结果运行成功了.

然后换到centos上执行

将项目运行目录下的文件复制到centos下,SQLite.Interop.dll这个要用linux64版本.结果运行成功.

二.使用微软的sqlite库

下载nuget包

使用这个包没有遇到任何问题.sqlite数据库读取成功了.

但问题来了.为什么微软自家开发的sqlite要比sqlite官方为.net开发的库要少一些坑呢?

转载于:https://www.cnblogs.com/mirrortom/p/9706825.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值