You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 2控制台应用发布时SQLite DLL加载错误求助

解决.NET Core自包含发布时SQLite原生DLL缺失的问题

我之前也碰到过和你完全一样的情况——在Visual Studio里跑起来毫无问题,一用dotnet publish -c release -r win-x64 --self-contained做自包含发布就弹出DllNotFoundException,找不到e_sqlite3.dll对吧?这本质是自包含发布过程中,SQLite的原生依赖没有被正确复制到发布目录里,给你几个亲测有效的解决办法:

1. 确认依赖包安装正确

首先检查你的项目有没有安装SQLitePCLRaw.bundle_e_sqlite3这个NuGet包(Microsoft.EntityFrameworkCore.Sqlite其实已经依赖它了,但有时候版本冲突会导致它没被正确引入)。如果没有的话,手动安装对应版本的包,确保和Microsoft.EntityFrameworkCore.Sqlite的版本完全匹配。

2. 修改项目配置强制复制原生库

在你的.csproj文件里添加以下配置,确保原生SQLite DLL被复制到发布目录:

<PropertyGroup>
  <!-- 针对自包含发布,启用原生库自解压 -->
  <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
</PropertyGroup>

<ItemGroup>
  <!-- 显式指定复制win-x64平台的e_sqlite3.dll -->
  <None Include="$(UserProfile)\.nuget\packages\sqlitepclraw.bundle_e_sqlite3\*\runtimes\win-x64\native\e_sqlite3.dll">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
  </None>
</ItemGroup>

注:把*换成你实际安装的SQLitePCLRaw.bundle_e_sqlite3版本号,或者保留*让MSBuild自动匹配最新版本。

3. 手动复制原生DLL到发布目录

如果上面的配置还是不行,那就直接手动操作:

  • 找到你的NuGet包缓存路径(一般是C:\Users\[你的用户名]\.nuget\packages\sqlitepclraw.bundle_e_sqlite3\[版本号]\runtimes\win-x64\native\e_sqlite3.dll)
  • 把这个DLL复制到发布生成的文件夹根目录,或者runtimes/win-x64/native子文件夹里,再运行程序就没问题了。

额外排查点

  • 检查你的.csproj里有没有正确设置RuntimeIdentifiers,比如:
<PropertyGroup>
  <RuntimeIdentifiers>win-x64;win-x86</RuntimeIdentifiers>
</PropertyGroup>
  • 确保你的.NET SDK版本是稳定版,避免用预览版SDK导致发布逻辑出问题;同时把所有EF Core相关的包都升级到最新稳定版,版本不兼容也是常见诱因。

内容的提问来源于stack exchange,提问作者user8982104

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 06:17:37