System.Data.SQLite.SQLiteException:回调例程请求中止执行已被用户中止

System.Data.SQLite.SQLiteException : Callback routine requested an abort Execution was aborted by the user

已升级到最新版本的 NHibernate,现在我的一些单元测试在我使用 SQLite InMemory 库的地方失败了。这是我升级的

现在可以编译以下代码,但不再正确运行。

 var cfg = Fluently.Configure()
                   .Database(SQLiteConfiguration.Standard.InMemory().ShowSql())
                   .BuildConfiguration();
 cfg.BuildSessionFactory();

我每次都收到以下错误。

SetUp : System.Data.SQLite.SQLiteException : Callback routine requested an abort Execution was aborted by the user

有没有其他人在升级过程中遇到过这个问题并找到了解决方法?我的时间很紧,所以任何帮助将不胜感激。

在得到另一位开发人员对该问题的回复后,他们问我使用的是哪个版本的 System.Data.SQLite DLL。原来我用的是1.0.60.0版本。该引用恰好被硬编码到 DLL 的下载副本中。我从项目中删除了引用,然后添加了安装版本 1.0.98.1

的 Nuget 包
<package id="System.Data.SQLite.Core" version="1.0.98.1" targetFramework="net45" /> 

安装此包并重新编译后,单元测试 运行 从 Visual Studio 正常但不使用 Msbuild.exe 命令行。这是持续构建服务器所需要的。直到我将引用模式从默认的 CopyLocal = False 更改为 CopyLocal = True

这将创建子文件夹 x86 和 x64,其中包含进行重建时所需的 "SQLite.Interop.Dll"。这允许单元测试在我的机器上正常工作。对于 Constant Integration (CI) 服务器,我需要添加一个构建步骤,将这两个文件夹复制到输出文件夹。

<PreBuildEvent>xcopy $(SolutionDir)\packages\System.Data.SQLite.Core.1.0.98.1\build\net45\* $(TargetDir) /S /V /Y</PreBuildEvent>

这允许 CI 服务器将文件复制到输出文件夹以进行单元测试。

虽然我觉得 愚蠢 在我更新 NHibernate 解决方案的其余部分时没有更新 System.Data.SQLite.DLL,但希望这个问题会阻止其他人制作同样的错误。