刚刚通过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.
原文地址:https://codeday.me/bug/20190630/1332095.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。