4

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

}

}

4

3 に答える 3

2

VS2010とTestDriven.Netを使用したSQLite1.0.88.0でこの問題が発生していました。私はいくつかのSOの質問に答えてみましたが、私のために働いたのはこれだけでした:

  1. ツール->オプション->TestDriven.Net->一般
  2. [テストの実行]で、[テスト実行間のテストプロセスをキャッシュする]のチェックを外します
  3. VisualStudioを再起動します

これで、プロセスやVisual Studioを再起動しなくても、テスト、デバッグテスト、再構築などを実行できるようになります。

于 2013-08-08T14:28:20.277 に答える
1

考えられる原因の1つを説明するKB記事

以下のほとんどは一時的に問題を解決します

于 2012-08-20T17:48:41.410 に答える
0

SQLLitedllの「出力ディレクトリにコピー」を「新しい場合はコピー」に変更するとうまくいきます。(プロパティを変更した後、VSを再起動する必要があります)

于 2014-10-09T12:52:30.640 に答える