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


88

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

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

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

エラーをグーグルすることは、明白なことを超えて何も思い付きません、すなわち、VSはファイルがロックされていると考えます。そして、ファイルをロックするのは間違いなく Visual Studio自体です。VSを閉じて再び開くと、プロジェクトは初めて実行されるためです。もう一度実行しようとすると、ファイルロックエラーが発生します。

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

編集:もう1つの興味深い発見:アプリを実行する必要すらありません。一度コンパイルするだけでファイルがロックされます。2回続けてコンパイルすることはできません!

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


vshost.exeを強制終了して、それが役立つかどうかを確認できますか?
ルネ

@rene-vshost.exeプロセスはありません。彼らはVS 2010で名前を変更しましたか?
Shaul Behr、2011

[アプリ名] .vshost.exe
rene

@rene-いいえ、現在のプロセスではその名前で何も表示されません
Shaul Behr

1
@Shaulフォームにカスタムユーザーコントロールを追加しましたか?実行する前に、デザイナーを閉じてみてください:stackoverflow.com/questions/2690119/...
ルネ

回答:


133

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

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

スクリーンショット

設定を変更するとvcshostとdevenvが解放されると思います。


2
ベストアンサー、IMO。(ああ、彼は自分自身に信用を与えました。)
ジェイソンP

これは素晴らしい回避策です!時々それは何らかの理由(?)で動作を停止しますが。
クリストファーD.エマーソン

3
@ChrisEmerson私もそれに気づきました。リリースに切り替えてアプリをビルドして実行することはできますが、デバッグに切り替えた後でプロジェクトをビルドすることもできません。
ザック

結局、アセンブリを取り除くためにVisual Studioを再起動する必要がありました。IISと上記の解決策をリセットしようとしましたが、C:\ Windows \ Microsoft.NET \ assembly \ GAC_MSILフォルダーにdllファイルが残っていることがわかります
Guo

1
これは正確に1回だけ機能し、その後は再び機能しません。VSを再起動した後でもです。リリースとデバッグをいくら切り替えても失敗します。
フランク

24

まあ、私は自分で問題を解決しました-まだ私には理由がわかりませんが。私は、プロジェクトからすべてのファイルを削除し、それらを再度追加して、問題の原因となっているファイルを特定することで、問題を特定することにしました。それで、プロジェクトにファイルを1つずつ再導入し、各ステップをコンパイルおよびクリーンアップしました...最後の1つを追加するまで...

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

元の.csprojのソース管理と比較しました。実際の違いはありません。また、以前のバージョンの.csprojに戻そうとしても、機能しました。

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

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

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


1
おそらくそれは、問題が発生していたファイルが削除されてから、どのプロセスからもアクセスされなくなったためです。すべてのファイルを削除すると、実際に解決する必要があります。いい考え。
Jeff LaFay、2011

2
これはまだコマンドラインのみのプロジェクト(フォームなし)で発生するため、実際に何かを実行しているとは思いません。
ザック

16

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


4
問題は解決しましたが、Console.WriteLine()は出力ウィンドウに文字列を出力しなくなりました。
Pierre Fournier、2015

2
コンソールアプリのチェックボックスをオフにしても問題が解決しない。
ザック2016年

2
Windowsクライアントプロジェクトで動作します。私はボックスのチェックを外して、正常にビルドし、それから再度チェックして、正常にビルドしました。
Fei-Xue

1
私のために働いていません。アプリ自体がロックされました。アプリをホストしていません。
ボリス・イワノフ

9

実際には、「Visual Studioホスティングプロセスを有効にする」をオンにする必要があります。少なくともとにかくVS2010について。そして私も持っています:

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

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

-app-vshost.exeは、デバッグしていないときでもバックグラウンドで実行されることに注意してください。これが、私が推測するたびに、ビルドと実行を成功させるものです。以前は実行されていませんでした。また、デバッグフォルダーとリリースフォルダーを整理し、ターゲットタイプを絶えず変更してみましたが、上記の場合を除いて何も機能しませんでした。以前の私の解決策は、ビルドの間に5分間待機することでした。これは、何かを行うのに非常に煩わしく、時間のかかる作業でした。開いているタブやXNAとウィンドウのフォーム、または開いているデザイナーが重要である場合、動作に変化はありません。この問題は32ビットまたは64ビットのビルドで発生し、ALT-F4を使用してアプリを強制終了したか、タスクマネージャーを使用して強制終了したかは関係ありません。最初はガベージコレクションの問題だと思いました。


ここのビルド前のイベントスクリプトで、最終的にこれが修正されました-ありがとう!
クリストファーD.エマーソン

これは私にとってこれまで何もしなかった唯一のコメントであり、そのような単純な問題がパッチなしで何年も存在し続けるとは信じられませんでした。
ConstantineK

7

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


5

これには少し遅れますが、プロジェクトのプロパティに移動し、[デバッグ]タブをクリックして、[Visual Studioホスティングプロセスを有効にする]チェックボックスをオフにします。


4

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


これは、これまで私にとって有効な唯一のソリューションでした。素晴らしいソリューション。再起動の手間が省けます。
JHubbard80 2016

これを事前ビルドとして用意しておくとよいでしょう。私はいつもこの問題を抱えています!とても迷惑。
Shimmy Weitzhandler 2017年

4

これを解決するには、bin \ Debugフォルダーを削除し、VSを再起動します。


問題は、これを毎回行うことができないことです。私にとって、再構築してアプリを実行しようとするたびにエラーが発生します。
FrenkyB


2

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

net stop iisadmin /y

その後

iisreset

私のために働いた。vs 2003


1

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

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

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


1

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

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

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


1

Visual StudioのXamarinアプリケーションでも同じ問題があり、テスト用のモバイルデバイスを取り外すことで解決しました。アプリケーションを閉じてデバッガーを停止しましたが、ソリューションをビルドまたは再ビルドしようとしたときにエラーがまだ発生していました。私は電話を受けなければならなかったので、私がデバイスを抜いた後にだけそれは止まりました。


1

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

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


1

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


0

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

これは通常は起こりません。ProcessExplorerは、プロセスがロックしたファイルを通知できると思います。それ以外の場合は、エクスプローラを他のsysinternalsツールのいずれかで処理します。

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


これはWebアプリではありません。それはwinformsです。
Shaul Behr、2011

3
ああ、「C#webformsアプリを持っている...」から始めるときに、質問を編集したいかもしれません
アンディ


0

私も同じ問題を抱えていました。デバッグ/リリース構成を変更してもうまくいきませんでした。少なくとも間には建物がないわけではない。

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

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



0

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



0

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


0

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

dockerを再起動する前に、前述のすべての回答を試してみましたが、msbuild.exeプロセスが実行されているのを見つけられませんでした。また、VSを再起動しようとしましたが、Dockerの再起動のみが機能しました。


0

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


0

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


0

私は同じ問題に直面していました。上記の解決策をいくつか試しましたが、うまくいきませんでした。

サーバーエクスプローラーから接続を閉じることでこの問題を解決し、Visual Studioで開いていたすべてのタブを閉じました。


0

これがSSISプロジェクトの場合は、タスクマネージャーを開き、DtsDebugHost.exeのすべてのインスタンスを強制終了します。これにより、ロックされたファイルが解放されます。


0

Visual Studio Codeを使用していて、開発サーバーが実行されていたためにこのエラーを受け取りました(私はを押して開発サーバーを実行しましたCtrl + F5)。

したがって、停止記号をクリックして停止すると、エラーは発生しなくなりました。


0

私はこの問題を抱えていました(VSだけでなく他の場所でも見た問題です)。

(私の場合)Dropboxが原因です。いくつかのコードを編集してrunを押した後、dropboxはすぐにファイルをロックします(処理できるようにするため)。

解決策1.もう一度runを押す

解決策2.ドロップボックスを一時停止します。(ドロップボックスをクラウドバックアップとして使用している場合は好ましくありません)

解決策3. Dropboxes同期リストからビルドフォルダーを削除します。


0

.NETプロジェクトのリテールおよびデバッグフォルダーであるObjを削除し、再構築すると再びうまくいきました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.