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

.NET 4.8类库项目NServiceBus访问SQLite调试异常求助

解决SQLite在NServiceBus调试时生成x64/x86双文件夹的问题

下面是几个可行的解决思路,按优先级推荐:

1. 固定项目目标平台,从根源避免双文件夹

直接在项目属性的生成标签里,把平台目标设为x64或者x86(别选Any CPU)。这样SQLite只会生成对应架构的文件夹,不会同时创建x64和x86两个目录。
另外要注意,调试用的NServiceBus.Host.exe架构得和项目目标平台一致——选x64就用64位的Host启动,选x86就用32位版本,不然还是可能出问题。

2. 修改SQLite包配置,强制单架构输出

如果用的是System.Data.SQLite.Core包,直接在项目的.csproj文件里加这段配置,指定只生成你需要的架构文件:

<PropertyGroup>
  <SQLiteUseStaticRuntime>true</SQLiteUseStaticRuntime>
  <SQLitePlatformTarget>x64</SQLitePlatformTarget> <!-- 换成x86也行,看你需求 -->
</PropertyGroup>

要是用的是sqlite3原生包,安装后手动删掉不需要的架构文件,或者在项目引用里设置只复制对应架构的本地文件。

3. 让NServiceBus跳过不匹配的SQLite文件

如果实在没法避免双文件夹生成,就在NServiceBus配置的时候加个过滤,跳过和当前运行架构不匹配的SQLite文件:

var endpointConfig = new EndpointConfiguration("你的端点名称");
// 根据当前进程架构动态排除文件
if (Environment.Is64BitProcess)
{
    endpointConfig.AssemblyScanner().ExcludeAssembliesMatching("SQLite.x86.dll");
}
else
{
    endpointConfig.AssemblyScanner().ExcludeAssembliesMatching("SQLite.x64.dll");
}

4. 禁用SQLite日志(如果日志是加载异常的诱因)

要是问题是SQLite生成的日志文件导致NServiceBus加载出错,可以通过连接字符串关掉日志:

var connStr = "Data Source=你的数据库文件.db;Journal Mode=Off;Logging=None;";

或者用代码全局忽略SQLite的日志输出:

SQLiteLog.Log += (sender, e) => { /* 啥也不做,直接忽略 */ };

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:07:12