2011-08-04 6 views
11

Visual Studio 2008ではかなり大きな.NET 2.0ソリューション(151プロジェクト)があります。VSで1つのプロジェクトでもビルドを行うことがよくあります。私のDLLアセンブリの1つを出力ディレクトリにコピーすることができないというエラーは、使用中であるためです。バックグラウンドで実行中の他のプロセスや、このアセンブリを使用する既存のデバッグセッションはありません。 Process Explorerを開いてこのアセンブリ名を検索すると、唯一の結果としてVisual Studio(devenv.exe)が表示されます。結果を見るVisual Studioに何らかの理由でDLLがロードされています。ソリューションを閉じてから再び開いても問題は解決しません。非常に混乱しているこの問題を回避するためには、VSから完全に抜け出す必要があります。誰が何が起こっているか考えている?私はWindow 7で動作していますが、Windows XPでこの問題を見たとは思えません。Visual Studioが私のDLLを使用しているためにコンパイルできません

私はVisual Studio 2008 Version 9.0.30729.1 SPを実行しています。 ReSharper 6も実行しています。

+0

アプリケーションの機能は何ですか?マルチスレッド化されていますか?プログラムの実行を停止したときにスレッドを適切に終了していない可能性がありますか? –

+0

@ Snorfus - 彼のプログラムは正確には重要ではありません。また、マルチスレッドの場合は重要ではなく、ソリューションを構築しようとするときに問題が発生するため、プログラム自体はその時点で実行されていません。 Visual Studioは、プロジェクト内のライブラリソリューションを参照するために便利な機能をすべて備えています。それはあなたが再構築やビルドを打つ前に混乱して解放することはできません。 –

+0

可能な重複:@stackoverflow.com/questions/2002273/visual-studio-locks-output-file-on-build –

答えて

3

誰が何が起こっているか考えている人はいますか?私はWindow 7で動作しています。私は Windows XPでこの問題を見たとは思えません。

私は、Windows XPおよびVisual Studio 2008へのさえローカライズされていない何いつも私の作品は、私は単純にすべてのソリューションをきれいにされた上で、この問題にすべての時間を実行し、これは私の中にあるかもしれない任意のファイルを取り除きますシステムのメモリ、Visual Studioのためです。

Visual Studioは参照をメモリ内に保持しているため、これらの参照のいずれかが更新されると、Visual Studioはその参照をメモリから解放する必要があります。それが本当に「しばらくして」より多く発生する場合は、プロジェクト内のソリューションの数を減らそうとすることがあります。

+0

これは次回にクリーンなソリューションを試してみます。私は実際には、プロセスが作成/使用するすべての一時ファイルと設定ファイルを消去するので、きれいにするのが好きではありません。私はこのような状況にあるプロジェクトが非常に多いので、VSを再起動するのは実際には苦痛が少ないかもしれません。 – Dennis

+0

溶液の洗浄がうまくいかない場合、次は(1)溶液を閉じ、(2)溶液を再び開きます。ソリューションを閉じると、VSがそのソリューション用に読み込んだすべてのDLLを解放するように強制する必要があります。 –

0

dllが(ProjectName).vshost.exeプロセスで使用されていると思います。あなたはそのプロセスを殺して、そのプロセスがうまくいくかどうかを調べるかもしれません。おそらく最善のことではありませんが、VSを再起動するよりも簡単かもしれません。

+0

いいえ、vshostプロセスは関与していません。プロセスエクスプローラによれば、それを使用しているプロセスはdevenv.exe(Visual Studio自体)だけです。 DLL(プロセスエクスプローラから手動で閉じることができるファイルハンドルではありません)として開いています。 – Dennis

0

ビルドする前に "Clean Solution"オプションを試してみます。これは、プログラムのクラッシュからぶら下がっているかもしれない余分な一時ファイルをクリーンアップすることができます。

0

私はこれがなぜ機能するのか分かりませんが、私は同じ問題がありました。プロジェクトを開始するプロジェクトを変更したとき、私はすべてを再構築したかったのです。

スタートアッププロジェクトをもう一度正しいものに変更すると、ファイルが使用されているためもうプロジェクトをビルドできなくなるため、Visual Studio IDEのバグのように見えます。

1

は、次のコマンドを使用してのVisual Studioの「イベントのビルド済み」に置く:これはあなたを助けるでしょう

if exist "$(TargetPath).locked" del "$(TargetPath).locked" 

希望を。

1

ホスティングプロセスを無効にしてください。

Visual Studioで実行可能プロジェクトを開きます。実行可能ファイルを生成しないプロジェクト(クラスライブラリやサービスプロジェクトなど)には、このオプションはありません。

  1. [プロジェクト]メニューの[プロパティ]をクリックします。

  2. [デバッグ]タブをクリックします。

  3. [Visual Studioホスティングプロセスを有効にする]チェックボックスをオフにします。

0

プロセスVBCSCompiler.exeを終了して再構築します。

関連する問題