zoukankan      html  css  js  c++  java
  • .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开发的库要少一些坑呢?

  • 相关阅读:
    C++11常用特性的使用经验总结
    Websocket协议的学习、调研和实现
    高性能后台服务器架构设计
    Linux下ping命令、traceroute命令、tracert命令的使用
    docker-4-Dockerfile配置文件详解
    Docker 国内仓库和镜像
    centos7.0查看IP
    tomcat报错:This is very likely to create a memory leak问题解决
    windows 环境下搭建docker私有仓库
    Docker 修改镜像源地址
  • 原文地址:https://www.cnblogs.com/mirrortom/p/9706825.html
Copyright © 2011-2022 走看看