1. ホーム
  2. c#

[解決済み] ビルドエラーです。"他のプロセスによって使用されているため、プロセスはファイルにアクセスできません"

2022-02-18 11:32:37

質問事項

私は、C#の webforms アプリは、今日まで順調に動作していました。

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

<ブロッククオート

Unable to copy file "objDebug↪MyProject.exe" to "binDebug↪MyProject.exe". このプロセスはファイル "binDebugMyProject.exe" が別のプロセスによって使用されているため、このファイルにアクセスできません。

このエラーをググっても、ファイルがロックされているとVSが考えているという、当たり前のこと以上のことは出てきません。 そして、それは 間違いなく なぜなら、VSを閉じて再び開くと、プロジェクトは問題なく実行されるからです - 一度目は。 2回目に実行しようとすると、ファイルロックエラーが発生します。

アプリを実行するたびにVSを閉じて開き直すのは、有効な回避策とは言えませんね どうすれば、ファイルをロックしている原因を突き止め、ロックされないようにできますか?

EDITです。 また面白い発見がありました。アプリを実行する必要さえないのです。 一度コンパイルしただけで、2回続けてコンパイルすることができないのです。

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

どうすればいいですか?

さて、私はこの問題を自分で解決しました - 理由はまだ分かりませんが。 私は、プロジェクトからすべてのファイルを削除してから、それらを再追加し、どのファイルが私のトラブルの原因であるかを決定することによって、問題を分離することにしました。 そこで、1つずつファイルをプロジェクトに再導入し、コンパイルとアップグレードを行い、各工程でクリーニングを行いました...そして... 最後の1つを追加しました。

...それでもすべてがうまくいきました。

元の.csprojのソースコントロールと比較してみましたが、特に違いはありませんでした。 そして、以前のバージョンの.csprojに戻してみても、まだ動作しました。

黒魔術です。 もしうまくいったら、理由を聞かないほうがいい場合もあります。

EDITです。 この問題は繰り返し発生するもので、コンパイル時に抽象的/汎用的なフォームのフォームデザイナーを開いているときに発生すると切り分けられたと思います。

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