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开发的库要少一些坑呢?

  • 相关阅读:
    .hpp文件
    最小高度的BST
    检查图中的有向路径
    c++ 对象内存布局详解
    链表求差
    offer--链表反转和从尾到头打印链表
    平衡二叉树的判断
    java 抽象类和接口
    原型模式--prototype
    装饰模式decorator
  • 原文地址:https://www.cnblogs.com/mirrortom/p/9706825.html
Copyright © 2011-2022 走看看