web-dev-qa-db-ja.com

ビルドエラー:「プロセスは別のプロセスで使用されているため、ファイルにアクセスできません」

私はC#webformsアプリを持っています。これは今日まで水泳だけで動作していました。

今日、突然、アプリを実行しようとするたびに、ファイルロックエラーが発生します。

ファイル「obj\Debug\MyProject.exe」を「bin\Debug\MyProject.exe」にコピーできません。プロセスは別のプロセスで使用されているため、ファイル "bin\Debug\MyProject.exe"にアクセスできません。

エラーをグーグルで調べても、明白なものを超えてはならない。つまり、VSはファイルがロックされていると考えている。そして、VSを閉じて再度開くと、プロジェクトが最初から正常に実行されるため、ファイルをロックするのは間違いなく Visual Studio自体です。もう一度実行しようとすると、ファイルロックエラーが発生します。

VSを閉じてアプリを実行するたびに再度開くことは、実行可能な回避策ではありません。ファイルをロックしているものを見つけて、ロックされないようにするにはどうすればよいですか?

編集:別の興味深い発見:アプリを実行する必要さえありません。一度コンパイルすると、ファイルがロックされます。連続して2回コンパイルできません!

この問題は、私のソリューションの1つのプロジェクトに固有のものです。他のすべてのプロジェクトは正常に機能し、何度でも実行できます。それ自体がロックされるのは、この1つのプロジェクトだけです。

80
Shaul Behr

さて、私は自分で問題を解決しました-理由はまだわかりませんが。プロジェクトからすべてのファイルを削除し、それらを再度追加して、どのファイルが問題の原因であるかを判断することで、問題を切り分けることにしました。だから、私はプロジェクトにファイルを一つずつ再導入し、道の各ステップをコンパイルしてきれいにした...まで...最後のものを追加した...

...そしてすべてがまだうまくいきました。

オリジナルの.csprojのソース管理と比較しました。本当の違いはありません。そして、以前のバージョンの.csprojに戻そうとしても、まだ機能していました。

黒魔術。それが機能する場合は、理由を尋ねない方が良い場合があります-それを受け入れて先に進みます...

編集:この問題は繰り返し発生するものであり、コンパイル時に抽象/汎用フォームのフォームデザイナーを開いたときに問題を分離したと考えています。

学習したレッスン:抽象フォームまたは汎用フォームまたはコントロールのフォームデザイナがコンパイルされる前に閉じられていることを確認してください!そうでない場合は、VSを閉じて再度開く必要があります!

24
Shaul Behr

私に合った簡単な解決策を見つけました。こんなふうになります:

問題が発生したら、最上部のビルド構成を変更し(「リリース」が「デバッグ」、またはその逆の場合)、ビルドしてから前の構成に戻し、再度ビルドします。

screenshot

構成を変更すると、vcshostとdevenvが解放されると思います。

117
Yechiel B.D.

ここで発見したことは、次のとおりです。プロジェクトのプロパティページの[デバッグ]タブで、[Visual Studioホスティングプロセスを有効にする]のチェックを外します。このプロパティの目的はわかりませんが、チェックを外すと機能します。

16
Yechiel B.D.

実際には、「Visual Studioホスティングプロセスを有効にする」にチェックを付けてください。とにかく少なくともVS2010では。そして私も持っています:

存在する場合 "$(TargetPath).locked" del "$(TargetPath).locked"存在する場合 "$(TargetPath)"存在しない場合 "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath) .locked」

ビルド前オプションで。この問題は私を非常に長い間悩ませてきましたが、John W.がこのチェックボックスに言及するまで、このチェックボックスが存在し、低いことに気づき、すでにチェックされていなかったことに気付きました。

また、-app-vshost.exeは、デバッグしていないときでもバックグラウンドで実行されることに注意してください。それが私が推測するたびに正常にビルドして実行できるようにするものです。以前は実行されていませんでした。また、デバッグフォルダーとリリースフォルダーを一掃し、ターゲットタイプを絶えず変更しようとしましたが、上記以外は何も機能しませんでした。以前の私の解決策は、ビルドの間に5分間待つだけでした。これは、非常に面倒で時間がかかるものでした。どのタブが開いているか、XNA vs Windowsフォームが開いているか、デザイナーが開かれているかなど、動作に変化は見られません。この問題は32ビットまたは64ビットのビルドで発生し、ALT-F4でアプリを強制終了するか、タスクマネージャーで強制終了するかは問題ではありません。理論的には、アプリがリソースを閉じたり解放したりすることはできません。最初はガベージコレクションの問題だと思いました。

9
Justin W

少し遅れて答えましたが、プロジェクトのプロパティ> [デバッグ]タブに移動して、[Visual Studioホスティングプロセスを有効にする]のチェックを外して解決しました。

5
John Willemse

VS2017-WindowsタスクマネージャーでMSBuild.exeのすべてのインスタンスを閉じることで解決しました

5
lloyd

ロックされたファイルの名前を(Windowsエクスプローラーを使用して)変更することで、この問題を克服しました。ファイルを削除することはできませんでしたが、ロックされたファイルの名前を変更することはできます!

3
Ola Eldøy

Bin\Debugフォルダーを削除し、おそらくVSを再起動することでこれを解決しました

3
Johannes Wentu

私にとって、それはインストールされ実行されていたWindowsサービスでした。いったん停止すると、ビルドは成功しました。

2
Garrison Neely

Visual StudioのXamarinアプリケーションでも同じ問題が発生しましたが、テストモバイルデバイスを取り外すことで解決しました。アプリケーションは閉じられ、デバッガーは停止されましたが、ソリューションをビルドまたは再構築しようとすると、エラーが引き続き発生していました。通話を受信する必要があるため、デバイスを取り外した後にのみ停止しました。

1
Tomislav3008

参照を確認し、プロジェクトへの自己参照を削除するだけです。

説明:カスタムコントロールを作成し、それをデザインフォームで使用するためにツールボックスパレットにドラッグアンドドロップした後に、問題が発生しました。最初に、カスタムコントロールソースファイル(.cs)と実行可能プロジェクト(.exe)の間に冗長性があるという警告が表示されました。実行/デバッグ時にエラーが表示されました:(.exe)にアクセスできません(使用されているためです).

文字通り、カスタムコントロールに関するソースコード全体を削除しましたが、以前のカスタムコントロールを取得できるように参照をチェックアウトし、それ自体を参照するまで、問題は残りました。参照を削除して完了しました!!

1

[実行]ボックスから次のコマンドを実行します。

net stop iisadmin /y

その後

iisreset

私のために働いた。 vs 2003

1
toha

私の2セントを投入するだけです。私の問題は、タスクマネージャーを開いてアプリケーションを強制終了することで解決しました。バックグラウンドで実行されていましたが、まったく実行されていたという兆候はまったくありませんでした(タスクバーにアイテムがなく、UIがなく、何もありません)が、これが発生した理由はわかりません。明らかに、デバッガーは実行されておらず、その時点で開かれたVSのインスタンスは1つだけでした。このVS 2017でまだこれが起こっていることに驚かされます。

おそらく、バックグラウンドで実行されているアプリケーションを探し、新しいアプリケーションを開始する前にそれを強制終了するビルドステップを追加できます。

1
Benjamin McGill

私のために働いたのはIISを再起動することでした

0
Beanwah

私の場合、いくつかのvstestプロセスが実行されていました(さまざまな名前で、すべてに文字列vstestが含まれています)。 taskmgrでそれらを終了する必要がありました。

0
J T

Webアプリはどのように構成されていますか? Cassini(トレイWebサーバー)またはIISで実行されますか?

ただし、これは通常は発生しません。 ProcessExplorerは、プロセスがロックしたファイルを教えてくれると思います。エクスプローラーを処理しない場合、他のsysinternalsツールの1つ。

SIツールの1つをダウンロードする前に試してみることの1つは、Cassini Webサーバーを停止し、ファイルが解放されるかどうかを確認することです。

0
Andy

私もこれと同じ問題を抱えていました。デバッグ/リリース構成を変更しても、トリックは行われませんでした。少なくとも間には構築されません。

私のソリューション(winform)では、デザイナーでwinformのメインフォームを開くことで解決しました。コードへの切り替え(F7)。次に、コードを閉じ、winformのデザイナーを閉じて、すべてを再構築します(ctrl-shift-B)。これは私のために働いた。

(バックグラウンドワーカーを実行する)winformアプリ内からのある種のハンドルは、使用されている他のライブラリのいくつかにまだファイルハンドルがあったようです。

0
Obelix

Dockerを使用してVSで開発している場合は、Windowsサービスのdockerを再起動すると、問題はすぐに解決されます。

Dockerを再起動する前に、私は言及されたすべての答えを試しましたが、msbuild.exeプロセスが実行されていないことを発見しました.

0
Carlos

最近、私が取り組んでいるソリューション(winformsプロジェクトだけでなく)を構築しようとしたときに、この問題に遭遇しました。
buildの失敗に加えて、プロジェクトのクリーニングが静かに失敗し(binフォルダーを確認すると、ファイルが実際に消去されていないことが示された)、Visual Studioを閉じてもdevenvプロセス-むしろ、クラッシュを引き起こしました。その後、Windowsの回復プロセスによりVisual Studioが再起動されます。

試行錯誤の後、VSの起動時に[最近]メニューからソリューションを開いたときにのみ問題が発生したことがわかりました。
File >> Open >> Project/Solutionからソリューションを開くと、通常どおり動作していることがわかりました。

現在、理由はわかりません-これを引き続き調査しますが、今のところは、少なくとも作業できます!

0
Guy Passy

最近、Service Fabricに展開するときに問題に遭遇しました。このエラーは、「ファイル」が使用中であることを示していますが、ポートが別のIDEで使用されていることがわかりました。ポートで既にホストされていた実行中のサービスを停止することにより、この例外の発生を停止することができました。

0
osoclever

プロセス.Net Core Hostを終了すると、すべて正常にビルドされました。 Visual Studioを閉じたり、他に何かを変更したりする必要はありませんでした。

0
slimeygecko

Google Nugetサポートパッケージを更新することで解決した同じエラー

私は同じ問題を抱えており、以前の回答で言及した方法のいずれかを使用しても修正できませんでした。タスクマネージャーで「SSIS Debug Hist(32ビット)」のすべてのインスタンスを強制終了することで問題を解決し、通常どおりに動作するようになりました。

0
B.M.

Visual Studioの2つのインスタンスで同じソリューションを開きました。

0
Janis S.

もう1つの解決策:ファイルがロックされると、括弧内のIDと共にブロックプロセス(「ServiceHub.Host.CLR.x64(7764)」など)が報告されます。プロセスを取り除くには、PowerShell(x + Win + I)を開き、「Stop-Process -Id idNumber」と入力します。

0
Artem K