【发布时间】:2012-10-06 19:59:48
【问题描述】:
- Visual Studio 2012
- SQLite 1.0.82.0(来自 nuget)
我正在尝试使用“测试资源管理器”中的“全部运行”命令 运行一次测试后会出现以下错误...之后它将不再构建,直到您重新启动 Visual Studio
这是构建错误
进程无法访问文件“SQLite.Interop.dll”,因为它是 被另一个进程使用
这里是代码
using System.Data.SQLite;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace Test.Sqlite
{
[TestClass]
public class Test_Sqlite_Locking
{
[TestMethod]
public void can_create_table()
{
using(var fact = new SQLiteFactory())
using (var conn = fact.CreateConnection())
{
conn.ConnectionString = "Data Source=:memory:;Version=3;New=True;";
conn.Open();
//conn.Close();
}
//SQLiteConnection.ClearAllPools();
//GC.Collect();
}
}
}
我已经尝试过,关闭连接,调用 ClearAllPools,GC.Collect,并直接创建 SQLiteConnection(而不是工厂)......仍然是同样的问题
如果你调试所有测试,这确实有效......但是当你只是运行测试时,这似乎锁定了它
【问题讨论】:
-
您能否在 conn.open 周围包裹一个 Try Catch 并查看您试图维持该连接的错误是什么......?如果是这样,则在连接后应该将其处理为您将其包裹在 using{}
-
我已经尝试过了……但是这个错误是 BUILD 错误……不是运行时错误……它只发生在你“运行”测试之后,之后它会出现 Visual Studio仍然有东西打开,库文件被锁定
-
它在哪一行出错..? using(var fact = new SQLiteFactory())
-
你能粘贴配置部分的样子吗?应该是这样的
系统数据> -
没有 app.config ... 这是完整的错误“警告 1 无法复制“D:\Code\Test.Sqlite\Test.Sqlite\x86\SQLite.Interop.dll”到“bin\Debug\x86\SQLite.Interop.dll”。在 1000 毫秒内开始重试 1。进程无法访问文件 'bin\Debug\x86\SQLite.Interop.dll',因为它正被另一个进程使用。测试.Sqlite"
标签: c# sqlite unit-testing visual-studio-2012 dispose