しばらくの間、すべてが順調でした。その後、アプリケーションを起動しようとしたときに、突然、Visual Studio のビルドに失敗しました。「ファイル '...bin\Debug[ProjectName].exe' を削除できません。パス '...bin\Debug[ProjectName].exe' へのアクセスが拒否されました。」という警告が表示されました。エラー「ファイル 'obj\x86\Debug[ProjectName].exe' を 'bin\Debug[ProjectName].exe' にコピーできません。プロセスはファイル 'bin\Debug[ProjectName].exe' にアクセスできません。別のプロセスで使用されています。」(Rebuild を実行すると警告とエラーの両方が表示されますが、Build を実行するとエラーのみが表示されます。これは関係ないと思いますか?)
警告とエラー メッセージの意味を完全に理解しています。Visual Studio は明らかに、exe ファイルを上書きしようとしていますが、同時に何らかの理由でロックされています。ただし、これは問題の解決策を見つけるのに役立ちません...私が見つけた唯一のことは、Visual Studioをシャットダウンして再起動することです。いくつかのフォームに変更を加えるまで、ビルドと起動は機能しますが、同じ問題が再び発生し、再起動する必要があります...非常にイライラします!
上で述べたように、これは既知の問題であるように思われるため、推奨される解決策がたくさんあります。ここですでに試したことをリストするだけなので、スキップするものがわかります。
新しいクリーン ソリューションを作成し、古いソリューションからファイルをコピーするだけです。プロジェクトのビルド前イベントに以下を追加します。
if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if not exist "$(TargetPath).locked" if exist "$(TargetPath)" move "$(TargetPath)" "$(TargetPath).locked"
プロジェクト プロパティ (.csproj ファイル) に次を追加します。
<GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>
しかし、どれもうまくいかなかったので、なぜ私がイライラし始めたのかわかるでしょう。他にどこを見ればいいのかわからないので、誰かが私に何かをくれることを願っています! これは VS のバグですか? もしそうなら、パッチはありますか? または、私は何か間違ったことをしましたか、循環参照または類似のものを持っていますか?もしそうなら、どうすれば見つけられますか?
どんな提案でも大歓迎です:)
更新: 以下のコメントで述べたように、Process Explorer を使用して、実際にファイルをロックしているのは Visual Studio であることも確認しました。