我在发布.NET Core控制台应用时遇到问题。当我从Visual Studio运行它并且我得到零错误时它工作正常。但是,当我发布时: dotnet发布-c release -r win-x64 - 自包含
我收到有关SQLite的错误。我正在使用Microsoft.EntityFrameworkCore.Sqlite库。我得到的错误是:
System.Reflection.TargetInvocationException:
调用的目标抛出了异常。 --->System.DllNotFoundException:
无法加载DLL'e_sqlite3':找不到指定的模块。 (HRESULT异常:0x8007007E)
我不知道是什么导致这个问题,我在互联网上找到的每一件事都不起作用或不适用于我的情况。我真的不知道我做错了什么,而且我已经尝试了所有的事情。
答案 0 :(得分:0)
如果您正在使用System.Data.SQLite
库,则会在常见问题解答中提及此例外:
https://system.data.sqlite.org/index.html/doc/trunk/www/faq.wiki#q5
为什么在尝试运行我的应用程序时会出现DllNotFoundException(对于“sqlite3.dll”或“SQLite.Interop.dll”)?
无法找到指定的动态链接库(DLL),或者由于缺少依赖项而无法加载它。确保指定的动态链接库位于应用程序目录或系统路径中的目录中,然后重试。此外,请确保已安装必要的Visual C ++运行时可再发行组件,除非您使用的是静态链接到它的动态链接库。
所以:
sqlite3.dll
与其他DLL位于同一目录中sqlite3.dll
的构建与您的Web服务器进程的ISA(即ARM,x86,x64)相匹配。PATH
或工作目录启动。答案 1 :(得分:0)
从.NET Core的角度来看,SQLite EF Core提供程序在技术上是第三方库。根据{{3}},您需要确保为项目修复了依赖项。
基本上,您需要确保在.csproj
文件中将依赖NuGet包作为依赖项调出,如下所示:
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="[version #]" />
</ItemGroup>
您需要确保系统上安装了NuGet软件包,因为在项目发布时,依赖关系是从本地 NuGet缓存中解决的。