asp.net core 3.1 sqlite找不到指定的模块

问题描述

在ASP.NET Core 3.1应用程序的sqlite中加载mod_spatialite扩展时遇到了一些麻烦。当我运行下面的代码时,出现以下错误:“ sql逻辑错误找不到指定的模块。”

string dbFile = "D:\\Temp\\spatialtest.db";
string connectString = $"Data Source={dbFile};Version=3;";

sqliteConnection connection = new sqliteConnection(connectString);
connection.open();
connection.EnableExtensions(true);
connection.LoadExtension("mod_spatialite");

我引用了NuGet的System.Data.sqlite(https://www.nuget.org/packages/System.Data.SQLite/1.0.113.1)包。我在http://www.gaia-gis.it/gaia-sins/中找到了用于在spacespaceite中加载的软件包。我尝试了当前稳定的4.3.0a和新的5.0.0-RC1中的软件包,包括amd64和x86二进制文件

奇怪的是,当我将代码复制到.NET Core控制台应用程序或.NET Core类库(CL),然后从控制台应用程序引用CL时,它确实起作用。

我不明白为什么它不能在Console应用程序中工作,而不能在ASP.NET应用程序中工作。我想念什么吗?任何帮助将不胜感激!

编辑:将测试项目添加到Github:https://github.com/RogierB/SQLiteSpatialiteTest

解决方法

可能在控制台应用程序中您正在使用EF?使用EF安装SQLite时,将安装所有必需的库。

尝试添加此库

Install-Package SQLitePCLRaw.bundle_e_sqlite3 -Version 2.0.3
,

我为我的问题找到了可行的解决方案。我创建了一个新文件夹,并将gaia下载(http://www.gaia-gis.it/gaia-sins/)中的所有文件添加到该文件夹​​中。我要做的下一件事是将新创建的文件夹添加到系统的PATH环境变量中(Win 10)。重新启动Visual Studio,现在它确实启动了,我什至不需要在项目/解决方案中拥有DLL,因为它将从PATH中获取DLL

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...