2012-04-09 16 views
4

NUnitユニットテスト用のカスタムクラスライブラリを作成しました。 {プロジェクトのルート} \ bin \ Debug \フォルダに.NET ILコードを含むdllファイルが作成されました。このクラスライブラリでNUnit単体テストを実行すると正常に動作しますが、クラスライブラリを再度コンパイルしようとするとこのエラーが発生します。 NUnitはロックを解除していません。これを引き起こしているのは何ですか?これを防ぐ方法を教えてください。NUnitはカスタムクラスライブラリdllのロックを解除しません... NUnitの実行後にクラスライブラリをコンパイルできません

Visual StudioのエラーにNUnitのを初めて実行した後にコンパイル:ファイル{クラスライブラリプロジェクトのルートフォルダ} +「\ binに\デバッグ\テストをコピーすることができません

エラー{エラー番号} {クラスライブラリプロジェクト名} .dll "を" bin \ Debug \ Tests.dll "に変更します。プロセスは別のプロセスで使用されているため、 'bin \ Debug \ Tests.dll'ファイルにアクセスできません。

私がコードを変更できる唯一の方法は、NUnitを閉じてNUnitを再オープンすることです。私はNUnit 2.6を使用しています。それは非常に迷惑です。

答えて

1

原因を見つけました。おそらく、NUnitの開発者がこれを修正できます。今のところ、私は以下に説明する回避策を持っています。

* .nunit、* .VisualState.xml(自動生成NUnitファイル)および* .config(NUnitの設定ではなくSystem.Configurationを使用してVisual Studioクラスライブラリから参照される* .configファイル)がない場合は、ファイル設定)をクラスライブラリのルートフォルダの内側に配置すると、これが発生します。 (そして、私の* .configファイルは私の* .nunitファイルと同じ名前なので、Tests.configとTest.nunitの両方が "Tests"という名前を共有しています)

たとえば、このエラーが発生したとき、私は次のセットアップを持っています:

私のクラスライブラリは "Tests.csproj"と呼ばれます。 Tests.csprojが "C:\ Source \ Tests \"にあるとします。それは "C:\ Source \ Tests \"をプロジェクトフォルダのルートにします。私のDLLは "C:\ Source \ Tests \ bin \ Debug \ Tests.dll"にあります。上記のNUnitファイルは "C:\ Source \ Tests \ NUnit \"にあります。

"C:\ Source \ Tests \"(クラスライブラリプロジェクトのルートフォルダ)にNUnitファイルを移動すると、Visual Studioクラスライブラリプロジェクトをコンパイルしようとするとこの問題は発生しません。これを引き起こすこのフォルダ構造は、NUnitプログラムを混乱させる必要があります。

私は別のフォルダを持っている理由は、すべてのNUnitファイルを分離した状態に保つことでした。これを修正した後、すべての* .nunit、* .xml、* .configファイルの前に "nunit_"という接頭辞が付いていたので、それらはすべてまとめてグループ化されています。

1

私がそれに対処するために見つけた唯一の方法は、NUnitを再起動することです。これによりロックが解除されますが、次にテストを実行するときに同じ問題が発生する可能性があります。

それはリロード設定することができ、per this google groups thread

See the Assembly Isolation section

OR最後に:

It could be the location of your code bases?

しかし、あなたは助けるかもしれない、この情報を見てみることができます

+0

初めてNUnit(最初の数か月)を使用し始めたとき、これはしませんでした。先週、ファイルのロックを開始しました。私は、これを防ぐ方法ではなく、それを修正する方法でより興味があった。解決策を見つけたら、教えてください。今のところ、私はWindowsのツールを使って強制的にロックを殺しています。 – MacGyver

+1

@MacGyver答えを更新しました。アセンブリのリロードを再生するとここで助けになるかもしれませんか? –

+0

Justinを助けてくれてありがとう..私はあなたにこの知識を共有するためのいくつかのポイントを与えます。up-vote your comment。私とは異なるワークフローが見つかった場合は、これが原因です。知っておくと良いでしょう。 – MacGyver

関連する問題