リリースされたバージョンのVisual Studio 2010 Prof.を使用してWinForms C#アプリケーションをデバッグできません。
2回目のデバッグ実行後に次のエラーメッセージが表示されます。
エラー9ファイル「obj\x86\Debug\Arrowgrass Reports.exe」を「bin\Debug\Arrowgrass Reports.exe」にコピーできません。プロセスはファイル「bin\Debug\Arrowgrass Reports.exe」にアクセスできません別のプロセスで使用されているため)
このファイルを削除しようとするビルド前スクリプトを試しましたが、Visual Studioによってロックされています。
ネット上でこれに関する参照がいくつかあるので、それは既知の問題です。修正プログラムや効果的な回避策はありますか?
私はこの問題を再現するのが非常に簡単だと感じました、そして、私のための修正はリチャード・フォースの答えのバリエーションです。デザイナーでUserControlを開いて、デバッガーを実行してからUserControlを編集すると、その後の再構築は失敗します。デバッガーを実行する前にUserControlを閉じると、このエラーは表示されないため、F5キーを押す前にデザイナーウィンドウを閉じてください。
2012年10月の時点で、VS 2010 SP1で問題が解決されなかったため、まだその問題があります。私がし、一貫して作業したのは、プロジェクトのホスティングプロセスを無効にすることでした。
ホスティングプロセスを無効にするには:
. Open a project in Visual Studio.
. On the Project menu, click Properties.
. Click the Debug tab.
. Clear the Enable the Visual Studio hosting process check box.
ソース: http://msdn.Microsoft.com/en-us/library/ms185330(v = vs.100).aspx
Vshost.exeプロセスを強制終了できます。
taskkill /F /IM "Arrowgrass Reports.vshosts.exe"
また、幸運にも問題のファイルを簡単に移動できる場合もあります。ファイルを移動するには、プロジェクトのビルド前イベントに次のコード行を追加します。
if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if exist "$(TargetPath)" if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"
Windowsの検索を無効にしても問題は解決しませんでした。ただし、ウイルス対策を無効にした場合(ウイルス対策はSymantec Endpoint Protection 11です)
そのため、プロジェクトのデバッグ設定を変更して作業フォルダーをC:ドライブのパスにポイントし、そのパスをウイルス対策の自動保護スキャン設定から除外することで、自分でこれを修正できました。
これが誰かの助けになることを願っています。
私はこの答えを同様の質問に投稿しましたが、ここでもそれを言うと思いました:
さて...これはかなりおかしいかもしれません。
私は過去数年間VS2010でこの問題を抱えていました。ここで述べた回避策は私には有効ですが、多くの場合、最初にすべてのフォーム/ユーザーコントロールを閉じるのを忘れていました。
単に開いているファイルを表示するだけで次のことを発見しました:
Computer Management (compmgmt.msc)->Shared Folders->Open Files
ロックされているファイルを「解放」します。非常に奇妙ですが、私にはうまくいきます!
私の場合、[プロジェクトのプロパティ]-> [セキュリティ]タブ-> [ワンクリックセキュリティ設定]のチェックを外しました(チェックされている場合)。それは私のために働いた。私のプロジェクトでは、C#プロジェクトで使用されているC++ dllに対してこのエラーが表示されていました。
指定されたプロセスのタスクマネージャを確認し、プロセスを明示的に終了します。このソリューションは私のために働いた。
最近変更されたクロージングユーザーコントロール私のシナリオの問題は解決しました。これが誰かの助けになることを願っています。
説明されている状態は、問題のあるDLLまたはEXE自体を参照していることによっても発生する可能性があります。この場合、前述のProcess Explorerテストは一致を返しません。 VS2010(およびおそらくすべての以前のバージョン)での操作のシーケンス中に、背後で参照を知らぬ間に追加する原因となっています。このエラーを解決するには、問題のあるDLLまたはEXEがそれ自体への参照としてリストされていないことを確認してください。
50ポイントではないのでコメントに書き込むことはできませんが、私にとっては、ESET Enpoint Security ver 5でプロジェクトフォルダーを除外しました。一部のファイルをブロック/ホグしたようです。私のエラーは、どのexeまたはファイルが使用されているかを示していなかったため、JoeCがAntivirusについて言ったことに最終的に到達し、試してみました。現在動作しているようです(Visual Studio 2010 SP1)
Windowsサービスの開発中にこの問題が発生しました。サービスの実行中に発生することがわかりました。したがって、サービスを停止するだけで(services.mscコンソールから)、準備完了です!
お役に立てれば。ティジャーニ。
(Visual Studio 2010 C#Express with SP1)ソリューションを2つの大きな(10個のソースファイル、ファイルごとに500行)から変更したときにエラー(「プロセスはファイルにアクセスできません...別のプロセスで使用されているため」)を取得しました一方が他方を参照しているプロジェクト、多くのプロジェクトが他のプロジェクトを参照している多くの(6)の小さなプロジェクト。
参照はdllファイルとexeファイル(それらのデバッグバージョン)への参照であり、プロジェクトが同じソリューション内にあったとしてもプロジェクトへの参照ではありません。
次に、F12が正しく機能するためには、ファイルではなくプロジェクトを参照する必要があることを学びました。そこで、参照を変更しました。これにより、F12が機能し(自動生成されたインターフェイス記述の代わりにソースファイルにジャンプします)、同時にビルド中の「ファイルにアクセスできません」というエラーが消えました。
リリースビルドを実行すると、「ファイルにアクセスできません」というエラーしか表示されません。参照は、exe/dllのデバッグバージョンを参照していました。この混合がVSのバグの引き金になるのではないかと思います。
Objファイルを削除し、サービスを停止してから再起動します。その後、問題を解決できます。
私にとっての解決策は、スタートアッププロジェクトをdllに変更することでした(問題は、スタートアッププロジェクトとしてアプリケーションがある場合にデバッグモードでのみ発生します)。ソリューションに複数のプロジェクトが含まれている場合(およびプロジェクトに.dllが含まれている場合、問題が発生しない場合)、その.dllに切り替えます。
また、.vshost.exeを強制終了しても機能しませんでした。再起動直後に.dllがロックされていたためです。
また、特により複雑なプロジェクトでは、参照がクリーンであることを確認し、アセンブリ参照よりもプロジェクト参照などを優先してください。悪い参照(循環および類似)が問題を引き起こすと思われますが、少なくとも読んでいます。
IISサービスを停止して、もう一度ビルドしてみてください。または、PCを再起動する余裕がある場合は、試してみてください。
乾杯
デバッグまたはリリースフォルダー(作業中のファイル)で.exeファイルを削除してみてください。WindowsはプロセスXがこれを開いたことを確認し、タスクマネージャーと詳細タブでタスクXプロセスを終了すると削除できません
私にとって最良の解決策は、プロジェクトファイルをIT部門が管理するサーバー上にあるマイドキュメントから移動し、Cドライブでローカルに見つけることでした。また、他の人が述べているように、「Visual Studioホスティングプロセスを有効にする」チェックボックスをオフにします。
プロジェクトがリモート共有上にあるときにこのエラーが発生しました(たとえば、IT部門によって$ env:homepathがネットワーク共有にリダイレクトされている場合など)。プロジェクトがローカルドライブに常駐していることを確認してください。
犯人と解決策を見つけたばかりだと思います。
サービスに移動し、「windows search」サービスを停止して無効にします。
これで問題は解決しました。
共有dllのビルド前イベントに次を追加するとうまくいきました:
if exist "$(TargetPath).locked*" del "$(TargetPath).locked*"
set exitprebuildfor$(ProjectName)=
for /l %%a in (1,1,10) do (
if defined exitprebuildfor$(ProjectName) goto :ok
if not exist "$(TargetPath).locked%%a" if exist "$(TargetPath)" move "$(TargetPath)" "$(TargetPath).locked%%a" & set exitprebuildfor$(ProjectName)=1)
:ok
set exitprebuildfor$(ProjectName)=
here のソリューションに基づいていますが、dllの名前を.lockedに変更するだけでなく、.locked1、locked2に名前を変更しようとし続けます。 10を使用すると、通常は1日1回問題に遭遇しますが、ant値を使用できます。
この問題は(最終的に!)VS2010 SP1で修正されたようです。
私の問題は、Outlook 2010(Outlook.exe)が、ASP.NET MVCプロジェクトと同じポートをIIS express。
解決策:Outlook.exeを閉じてソリューションを実行し、Outlookを再度開きます(別のポートを使用するように)。
このトピックで説明したのと同じエラーメッセージを受け取ったので、これが誰かの助けになることを願っています。
Binフォルダーを削除して、アプリケーションを実行します。これは私のために働いた。 :)
Windows Live SYNCをアンインストールしてみてください。まだ起こりますか?
C DLLの参照を使用しているC#プロジェクトで作業している場合、[安全でないコードを許可する]チェックボックスをオンにすることでエラーを排除できます。私はC#プロジェクトでポインターを使用していませんが、C#でビット演算子を使用していました。これらのCのような機能が「安全でない」コードとしてモーフィングした可能性があります。
Visual Studioホスティングプロセスは、実行可能ファイルポインターを保持できます。ホストインスタンスを停止するには、Project properties
その後、Debug
タブに移動します。 Enable the Visual Studio hosting Process
オプションを選択し、再度チェックボックスをオンにしてデバッグします。
IISはファイルポインタを保持できます。IISを再起動すると問題を解決できます。
私のために働いたのは、binフォルダの「読み取り専用」ステータスを削除することでした。私がそれをやった後、それはそれ以来ずっと働いています。
デバッグでVisual Studioホスティングをオフにして、プロジェクトを実行し、再度オンにしてプロジェクトを実行します。
Visual Studioでプロジェクトを開きます。
。 [プロジェクト]メニューの[プロパティ]をクリックします。
。 [デバッグ]タブをクリックします。
。 [Visual Studioホスティングプロセスを有効にする]チェックボックスをオフにします
私の問題は、カスタムコントロールを作成し、デザインフォームで使用するためにツールボックスパレットにドラッグアンドドロップした後に始まりました。最初に、カスタムコントロールソースファイル(.cs)と実行可能プロジェクト(.exe)の間に冗長性があるという警告が表示されました。実行/デバッグ時にエラーが表示されました:(.exe)にアクセスできません(使用されているためです).
文字通り、カスタムコントロールに関するソースコード全体が削除され、最後の問題は、参照をチェックアウトし、以前のカスタムコントロールを「可能」にするためにそれ自体を参照するまで停止しませんでした。参照を削除して完了しました!!
そのため、参照を確認し、プロジェクトへの自己参照を削除するだけです。
プロジェクト全体のコピーを作成し、新しいコピーからプロジェクトを実行するだけです。..正常に動作します。ただし、古いプロジェクトを削除するには、何らかの方法でデバッグのプロセスを終了する必要があります。