System.Data.SQLite.SQLiteException:回调例程请求中止执行已被用户中止
System.Data.SQLite.SQLiteException : Callback routine requested an abort Execution was aborted by the user
已升级到最新版本的 NHibernate,现在我的一些单元测试在我使用 SQLite InMemory 库的地方失败了。这是我升级的
- FluentNHibernate 1.2.0.712 ==> 2.0.3
- NHibernate 3.1.0.4000 ==> 4.0.4.4000
- Iesi.Collections 3.1.0.4000 ==> 4.0.1.4000
现在可以编译以下代码,但不再正确运行。
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,但希望这个问题会阻止其他人制作同样的错误。
已升级到最新版本的 NHibernate,现在我的一些单元测试在我使用 SQLite InMemory 库的地方失败了。这是我升级的
- FluentNHibernate 1.2.0.712 ==> 2.0.3
- NHibernate 3.1.0.4000 ==> 4.0.4.4000
- Iesi.Collections 3.1.0.4000 ==> 4.0.1.4000
现在可以编译以下代码,但不再正确运行。
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,但希望这个问题会阻止其他人制作同样的错误。