16

こんにちは、スタックオーバーフローです。

最近、Visual Studio 2010 でプログラミングしているときに、ビルドしようとすると VS が bin/Debug/(ProjectName).exe ファイルをロックするという問題が発生し、プロジェクトをビルドしようとすると以下のエラーが表示されます。 10回:

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

ソースを編集してからデバッグしようとすると、問題が発生します。さまざまなプログラムを使用して確認しましたが、ファイルを使用する唯一のプログラムは Visual Studio です。

10分くらい待ってからビルドすればちゃんと動きそうですが、いろいろ試してみると10分待ってからビルドするのはよくないです。

このサイトだけでなく、Google で見つけられるあらゆる場所で、さまざまな解決策を試しました。

私が見つけたが、うまくいかなかったいくつかの解決策

解決策 1 - ビルド前のスクリプトを使用する

ここ Stackoverflow に関するいくつかの異なる質問で、1 つの解決策が見つかりました。Project Properties > Build Eventsそれは、ビルド前イベントのコマンド ラインに次のように追加することです。

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

これにより、通常よりも 1 回プロジェクトをビルドすることができましたが、コードを再度編集してからビルドすると、同じエラーが発生しました。

注:デバッグ ビルドの代わりにリリースをビルドしようとすると、ビルド前のスクリプトが壊れているようで、コード '1' で終了し、VS が適切にビルドできないようです。ビルド前のスクリプトを削除すると、再び「通常」のように機能しますが、同じエラーが発生します。

解決策 2 - Visual Studio を管理者として実行する

これは私が見つけた別の解決策ですが、どちらもうまくいきませんでした。そのため、Visual Studio には必要なすべての権限が既にあり、管理者として実行しても実際には違いはないと思います。

解決策 3 - AssemblyVersion を変更する

この質問では、Visual Studio ビルドが失敗します: exe ファイルを obj\debug から bin\debug にコピーできません。ファイルAssemblyVersion内のを に変更することを含む別の解決策を見つけました。しかし、これは私にとって何の違いもありませんでした。Properties\AssemblyInfo.cs"2.0.0.0"

解決策 4 - ビルド前に UserControl デザイナーを閉じる

インターネット上のさまざまな回答によると、Visual Studio はビルドされたプロジェクトの実行可能ファイルを使用してUserControlデザイナーをレンダリングしているようです (?)。UserControl私の場合、XNA を主に使用し、デザイナーを使用しないため、これはおそらくそうではありません。

解決策 5 - アプリケーションの終了時にリソースをクリーンアップする

これは、私が適切に実装できなかった解決策かもしれません。ただ、これが解決策である場合、なぜ以前はそれを行う必要がなかったのでしょうか。XNA は、Contentパイプラインを介してロードされるすべてのものをアンロードすると想定しているため、このソリューションはあまり意味がありません。

この問題に光を当てることができる人がいれば、それは本当に素晴らしいことです.2秒の変更を行ったために10分間待つのは好きではないので、実際に何かをプログラミングするのを止めています.いつも。

4

11 に答える 11

2

私は自分で解決策を見つけたと思います。プロジェクトのプロパティで、「Visual Studio ホスティング プロセスを有効にする」がチェックされていませんでした。少なくとも今のところ、それを確認すると問題は解決したようです。

mcmonkey4eva の投稿から思い出しました。ありがとうございます =)

そして、私が持っていると答えてくれた他の人に感謝します。スタックオーバーフローはすごい!

于 2013-06-10T09:45:31.223 に答える
2

私はこの問題に何度か遭遇しました。

私の原因はあなたの原因とは異なるかもしれませんが、何が問題で、どのように修正したかをお伝えします。参考になれば幸いです。

基本的に、プログラムが正常に終了したように見えても、完全に終了することはありませんでした。引き続き実行されるため、ファイルが引き続きロックされます。

私が最初に使用した簡単なダーティ フィックス (およびこれが当てはまるかどうかを証明する方法) は次のとおりです。

  • タスク マネージャーを開く (Ctrl-Alt-Del)
  • [プロセス] タブをクリックします
  • プログラムの名前 (TileEngine.exe) を探します。
  • 注: おそらく name_vshost.exe (TileEngine_vshost.exe) があります。これは VisualStudio の問題です。無視してください。関係ありません。
  • 見つかった場合は、プログラムが実際には完全に終了していないことを意味します。
  • そこにある場合は、それをクリックして「プロセスの終了」を押します

それがそこにある場合、何らかの理由で、あなたのプログラムは私のようにシャットダウンしませんでした.

多くの場合、これは、スレッドが起動されて忘れられているか、完了しない非同期タスクなどから発生します。

OnExiting(..) void 関数で、実行中のすべてのスレッドを強制終了するようにしてください。

すべてのスレッドと他のブロッカーを閉じようとする最善の試みにもかかわらず、プログラムがまだ実行されている場合は、非常に汚い悪い方法を使用できます。 OnExiting(...) でコード "System.Diagnostics.Process.GetCurrentProcess().Kill() を実行します;" - これは、現在のプロセスをタスク マネージャー スタイルで強制的にシャットダウンします... これは、他の方法では機能させられない緊急時の手段としてのみ使用されます。

于 2013-06-09T20:30:10.887 に答える
1

ファイアウォールによってブロックされているファイルがあるかどうかを確認しましたか? アバストのフル バージョンに切り替えたとき、ファイル システム シールドを無効にする必要があることがわかりました。Visual Studio プロジェクトを実行しようとすると、実行可能ファイルを削除するのが大好きです。

VS2012 Professional へのアップグレード時に問題が発生しました。(SDK、.Net、Visual C++ 再頒布可能パッケージ)

これらすべてが、使用している VS の現在のバージョンと互換性があることを確認してください

私がしたことは、両方のVisual Studioダウンロードに関連するすべてのものをアンインストールすることでした。プロジェクト ファイルを削除して別の場所に保存し、元に戻すことができる場合。すべてのプログラム ファイルを調べて、間違ったフォルダーに何かが隠されているかどうかを確認し、C ドライブを確認します。

これは、ダウンロードして再インストールすることを意味しました(フレッシュ):

プログラムファイルを一掃すれば大丈夫だと思います。自分が何をしているのかよくわからない限り、レジスターに行くことはお勧めしません。すでにレジスターに変更を加えている場合は、それと他のオプションを検討します (これで問題が解決しない場合)。

于 2013-06-09T12:02:34.130 に答える
1

フォルダー レベルでチェックを外して、ソリューションから読み取り専用チェックを削除してみてください。

于 2013-06-10T09:53:23.380 に答える
1

ビルド前のコマンドもデザイナーも閉じませんでしたが、デバッグからリリースに、またはその逆に変更するだけでロックされたファイルが解放され、IDEを閉じずにそれらを削除できる方法を見つけました。

于 2016-08-09T10:44:32.290 に答える
1

私はこの問題に遭遇しましたが、私の場合はソリューションに bin が含まれていたためです。ソリューションから bin フォルダーを除外するとすぐに、問題はなくなりました。

于 2013-07-08T16:52:28.790 に答える
0

解決策に関するリソースを整理して、この問題を解決しました。アプリケーションの同じソリューション フォルダーにいくつかの画像を配置したときに、このエラーに気付きました。

そう、

  • アプリからすべての画像とリソースを削除し、それなしで保存しました。
  • 画像を Solution フォルダの外に移動しました。
  • ソリューションを開き、コントロールの [インポート] ボタンを使用して、この画像を再度追加します。

これを試す場合は、プロジェクト設定のアプリケーション アイコンを忘れずに実行してください。

今、すべてがうまくいっています。

お役に立てば幸いです。

于 2013-10-24T17:03:20.153 に答える
0

ファイルがロックされるため、Windows インデクサーを無効にする必要があります。

このガイドに従って無効にする方法

于 2015-06-25T10:39:00.513 に答える
0

Build Platform ターゲットを x86 から Any CPU に変更します。

于 2016-07-20T20:28:47.983 に答える