c# – 最新的SQLite版本错误

刚刚通过Nuget将我的SQLite dll更新为v1.0.81.0,我收到的错误如下所示.首次成功执行一次或多次(不确定)后会发生这种情况.环境是x64计算机上的vs2010,但是针对x86的构建设置.

我使用SQLite对我的NHibernate映射进行单元测试.在过去经常发现SQLite有点“胡思乱想”,我不愿意弄乱工作单元测试夹具(见下文)

有人知道这里出了什么问题吗?

干杯,
Berryl

错误消息

Unable to copy file "...\x86\SQLite.Interop.dll" to "bin\Debug\x86\SQLite.Interop.dll". The process cannot access the file 'bin\Debug\x86\SQLite.Interop.dll' because it is being used by another process. Parties.Data.Impl.NHib.Tests

单元测试夹具(足以显示文件访问权限)

public abstract class SQLiteTestFixture
{

    protected override void BeforeAllTests()
    {
        _configureDbFile();
        base.BeforeAllTests();
    }

    protected override void AfterAllTests()
    {
        base.AfterAllTests();

        _deleteAllDbFiles();
    }

    #region Db File Maintenance

    /// <summary>
    /// Using a file is likely slower than just memory but not noticeably so far,
    /// AND seems to be a bit more stable
    /// </summary>
    private const string DB_FILE_SUFFIX = ".Test.db";

    /// <summary>
    /// Just make some random file name with a known suffix, so we can clean up when done.
    /// </summary>
    private void _configureDbFile()
    {
        _dbFile = Path.GetFullPath(Guid.NewGuid().ToString("N") + DB_FILE_SUFFIX);

        // highly unlikely but just in case the same file is already out there
        _deleteDbFile();
    }

    private void _deleteDbFile()
    {
        if (File.Exists(_dbFile)) File.Delete(_dbFile);
    }

    private static void _deleteAllDbFiles()
    {
        var files = Directory.GetFiles(Directory.GetCurrentDirectory(), "*" + DB_FILE_SUFFIX);
        foreach (var file in files)
        {
            File.Delete(file);
        }
    }

    private string _dbFile;

    #endregion

}

}

解决方法:

我在使用VS2010和TestDriven.Net的SQLite 1.0.88.0时遇到了这个问题.我尝试了几个SO问题的答案,但唯一对我有用的是:

>工具 – >选项 – > TestDriven.Net – >一般
>在“运行测试”下,取消选中“在测试运行之间缓存测试过程”
>重新启动Visual Studio

您现在应该能够运行测试,调试测试,重建等,而无需重新启动进程或Visual Studio.

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能