Nugetを介してSQLitedllをv1.0.81.0に更新したところ、次のようなエラーが発生します。これは、最初に1回以上正常に実行された後に発生します(不明)。環境はx64マシン上のvs2010ですが、ビルド設定はx86を対象としています。
私はSQLiteを使用してNHibernateマッピングをユニットテストします。過去にSQLiteが少し「気難しい」と頻繁に感じたことがあるので、作業ユニットのテストフィクスチャをいじるのは気が進まない(以下を参照)。
誰かがここで何が間違っているのか手がかりを持っていますか?
乾杯、
ベリール
エラーメッセージ
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
}
}