gpt4 book ai didi

c# - SQLite.Interop.dll 在运行 Visual Studio 2012 单元测试框架测试后被锁定

转载 作者:IT王子 更新时间:2023-10-29 04:36:18 26 4
gpt4 key购买 nike

  • Visual Studio 2012
  • SQLite 1.0.82.0(来自 nuget)

我正在尝试使用“测试资源管理器”中的“全部运行”命令运行测试一次后会发生以下错误...之后它将不再构建,直到您重新启动 visual studio

这里是构建错误

The Process cannot access the file 'SQLite.Interop.dll' because it is being used by another process

这是代码

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(而不是工厂)......仍然是同样的问题

如果你 DEBUG ALL TESTS 这确实有效......但是当你只是运行测试时这似乎会锁定它

最佳答案

我在 VS2012 中找不到该选项(至少对于标准单元测试而言是这样),因此我想出了另一个解决方案:

您面临的问题是单元测试运行器保持加载状态,因此重复测试运行速度更快。由于 SQLite.Interop.dll 可能不会经常更改,我将 CopyToOutputDirectory 选项更改为 PreserveNewest 而不是默认的 Always.

您可以通过打开属性 (F4) View 并在您的解决方案中选择 SQLite.Interop.dll 文件来执行此操作。唯一可能仍然锁定的情况是当您升级到更新版本的 SQLite 并重新启动 VS2012 然后对我来说工作正常。

关于c# - SQLite.Interop.dll 在运行 Visual Studio 2012 单元测试框架测试后被锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12919447/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com