要求された操作は、ユーザーがマップしたセクションが開いているファイルでは実行できません


210

4つのファイルをbinフォルダーにコピーしようとすると、メインサービスを停止した後、1つのファイル(TexteDll)でエラーが発生します。エラーは:

Cannot copy TexteDll: The requested operation cannot be performed on a file 
with a user-mapped section open

一部のシステムロックが原因である可能性があります。または、別のプロセスがこのDLLを使用している可能性があります。グーグルで検索したところ、システムを再起動すると問題が解決する場合があります。

誰かがこれの原因または解決策を提案できますか?TexteDllのプロパティ(一般、バージョン、セキュリティなど)を調べました。すべてが正常に見えます。



8
質問には実際にはもっと多くの「重複」があります(例:stackoverflow.com/questions/1818076/…)-問題は、根本原因が何か異なるたびに発生することです。
MaciekTalaska

6
次回はマイクロソフトのサイトから「プロセスエクスプローラー」を使ってみてください。「ハンドルを探す」という機能があります。そこでファイルを検索すると、そのファイルを処理しているプロセスが表示されます。次に、そのプログラムがそのアクセス権を持っている理由の調査を開始できます。ところで、サービスを停止しても、必ずしもサービスをホストする実行可能ファイルが終了するわけではありません。実行可能ファイルは複数のサービスをホストできます。最悪の場合、大量のメモリを使用する多くの.netサービスは、そのメモリを解放した後に終了する傾向があり、サービスの停止イベントの数分後に発生することがあります。
Erdogan Kurtur 2012

3
Hehehe Visual StudioがDLLをロックしていました。Visual Studioを閉じ、ソリューションの再構築を試みましたが、機能しました。
Leniel Maccaferri 2013

これは明らかにメモリの競合です。オブジェクトの特定の「インスタンス」には、割り当てられたビットメモリが割り当てられており、その後、それに割り当てられたメモリ(静的?)が、おそらく異なるレベルのシステムアクセスで他の場所にすでに割り当てられていることがわかります。
ouflak 14

回答:


177

私の場合、DebugフォルダーにコンパイルされたDLLをロックしていたのはExplorerでした...奇妙ですね。

Unlockerというツールを使ってみました。

Unlockerで削除する必要がありました。ファイルがロックされていないというメッセージが表示されていても、その単一のファイルを削除しないとフォルダを削除できませんでした...

その後コンパイルしました。

編集:

私の場合、これが起こっている理由を知りました。DLLをVisual Studio内のテキストエディターで開きました...


33
多くのビジュアルスタジオウィンドウの1つでdloも開いていました。その更新を投稿していただきありがとうございます。
ptfaulkner 2013年

3
同じように、どういうわけか、破損したDLLはエディターのテキストウィンドウで開かれていました。
Harv

3
DLLもVSのタブとして開く!ありがとうございました!
Connell 14

5
完全な開示:「Unlocker」へのリンクは完全なスパイウェアです。すべての種類のツールバーとがらくたをインストールします。それらのボックスが不要であることを示すチェックボックスをすべてオフにしたとしてもです。
ティム・

7
Unlockerの代わりにProcess Explorerを使用します。PEが実行されたら、[検索]-> [ハンドルまたはDLLを検索]に移動し、ロックされたファイルの名前を貼り付けます。どのプロセスがそれをロックしたかが表示されます。実行しても問題がなく、問題を解決する必要がある場合は、強制終了してください。
Nikita G.

71
  • 2つ以上のプロジェクト間で参照されているアセンブリバージョンの不一致に関する警告をダブルクリックすると、アセンブリビューウィンドウを閉じるのを忘れて、他のタブに表示されたままになる場合があるため、VS自体によってアセンブリがロックされ、それを理解するのにかなりの時間がかかりました:)

    VSが提供するパワーに注意してください;)

  • 別のダミーシナリオ。時々、単にobjフォルダー全体を削除するか、ロックされたファイルがこのくだらないエラーを解決するために警告されたファイルだけを削除します。

2
私のためにそれをソートしました...私はシステムの再起動も行いましたが、VSはアセンブリビューウィンドウを再び開きました。すべてのタブを閉じることができました。乾杯
デイブ・ローレンス

35

VS上のすべてのドキュメントを閉じて、再構築を再試行してください。動作しない場合は、VSを再起動してください。この問題は、DLLファイルのロックに関連しています。


3
同じように、VSの奇妙さ。再起動して並べ替えてください。
PJUK 2013

1
これでうまくいきました。私の特定の状況で奇妙なこと。VS環境の外でスタンドアロンのexeを実行しました。一晩実行したままにして(メモリテスト-合格)、午前中にシャットダウンし、2、3の小さなコード変更を行いました。これが原因で、突然ビルドを完了できませんでした。この記憶がこのように矛盾しているように見える奇妙な。
ouflak 2014

厄介なことに、開いているドキュメントが原因でエラーが発生しました。
ブライアンオグデン

「すべてのドキュメントを閉じる」と再構築は実際に私のために働いた!:o
Antoine Meltzheim

11

Visual Studioを閉じ、binを削除し、リリースフォルダーをデバッグして、Visual Studioプロジェクトを再度開始します。それで私の問題は解決しました


これは私のために働いた!ありがとう!念のため、ディレクトリの名前を変更しましたが、うまくいきました。
DavidScherer

10

同じ問題があり、私の場合、既存の出力ファイルが他のアプリケーションによってロックされているように見えました。

OpenedFilesViewを使用して出力ファイルをロックしているアプリケーションあなたがチェックできます。 http://www.nirsoft.net/utils/opened_files_view.html


10

私は開発者であり、UnlockerのようにRegisteryに挿入されたアプリは好きではありません。私はSysInternals Process Explorerを使用して 、dll Find > Find Handle or Dll [Ctrl-F]をロックし、プロセスを強制終了しました


1
VSが閉じられたときに終了しなかったVSプロセスによってロックされていることがわかりました。
Yoztastic

2
DevEnvが閉じられ、タスクマネージャーがそれを表示しなかった後でも、Process ExplorerはDevEnv Suspendedのいくつかのインスタンスを表示しました。これらを殺せばうまくいきました。
DeclanMcD 2017年

1
これは、「私の場合はXが原因だった」とだけ言うのではなく、どのプロセスがファイルをロックしているを見つける方法を示しているため、最も正しい答えです。Windowsのすべての開発者は、procexpとprocmonをツールベルトに追加することでメリットを得られます。
Matt Wanchap

9

他の人は、このエラーが別のアプリケーションがファイルをロックしていることが原因であることをすでに確立しています。git diffあなたがそれをやめるまでファイルをロックすることを指摘したかっただけです。それが私の場合にこれを引き起こしたものです。


私にとって同じ問題。差分をやめなかったのを忘れました。残念ながら、他のウィンドウの束を閉じて、まだ差分になっているのを確認するまで、この回答は表示されませんでした。それから私は
重複

1
@codeMagic Git 2.23(2019年第3四半期)は、その罠を回避します。以下の私の回答を
VonC '27 / 07/27

9

同じ問題がありました。私がそれを解決した方法は:

  1. 「タスクマネージャー」を開く
  2. 終了タスク「Explorer.exe」
  3. 「ファイル」->新しいタスクの作成-「explorer.exe」と入力-> OK
  4. プロジェクトをクリーンアップすると機能します

また、タスクマネージャーからエクスプローラプロセスを再起動する必要がありました。私の場合、エクスプローラの「プレビュー」領域で「問題のある」ファイルを表示していました。これは、ファイルを解放することなく、時々ファイルをロックするようにも見えます。すべてのエクスプローラーウィンドウを閉じても解決しませんでした。プロセスを再起動する必要がありました。
ゲホ

最後に!ありがとうございました。
TheJack

6

ウイルス対策ソフトウェアを実行していますか。AVソフトウェア(または他のソフトウェア)が、ファイルマッピングAPIを使用してファイルを読み取っていたことが原因で、問題が発生した可能性があります。


6

私の場合MSBuild.exe、ファイルをロックしていたハングしているプロセスを強制終了する必要がありました(Visual Studioを閉じた後でもありました)。


1
あなたはそれを釘付けにしました。どうもありがとう!
Larry


3

同じ問題がありました。再起動が機能しませんでした。タスクマネージャーでVBSCompilerと呼ばれるプロセスが実行されていました。このエラーを修正するには、プロセスを終了する必要がありました。


ソリューションをクリーンアップして再試行することもできます
Nirjhar Vermani '29

3

ここに投稿された解決策はどれも私にとってうまくいきませんでした。ファイルをロックしているのはdevenv.exe(Visual Studio)でしたが、再起動すると再度ロックされます。

奇妙なことに、Windowsではファイルを(ごみ箱に)削除できませんが、Shift + Delete(完全な削除)は機能しました。


2

Visual Studioを閉じて、管理者として実行します。それは私の問題を修正しました。


rstudioで光沢のあるアプリを作成しているときにこのエラーが発生したため、これらの回答の多くは役に立ちませんでした。しかし、私はこれを見て、rstudioを管理者として再起動してみましたが、うまくいきました。次に、ユーザーとして実行に戻ると、再び機能しました。
ポール

2

私にとっての解決策は、VSのすべてのインスタンスを閉じて、ハングしているdevenv.exeプロセスを強制終了することでした。


2

私の解決策は、コンピューターを再起動することでした。


2

それはされています指摘により、2016年にアンドリュー・カスバートのgitのdiffロックファイルことをあなたはそれから終了するまで同様。

Git 2.23(2019年第3四半期)ではそうなりません

Johannes Schindelin()によるcommit 3aef54e(2019年7月11日)を参照してください。(合併によりJunio C浜野- -コミットd9beb46、2019年7月25日)dscho
gitster

diffmunmap()外部diffを実行する前のファイルの内容

たとえばから外部diffを実行する場合diff tool、問題のファイルを書き込みたいと考えるのが安全です。
Windowsでは、これは、上記のファイルへのオープンハンドル、またはマップされた領域だけを保持する他のプロセスが存在できないことを意味します。

だから確認しましょう git diff、問題のファイルへのオープンハンドルをそれ自体が保持していない。

実際、外部diffは先ほど書いたファイルを使用するので、ファイルのペアをすぐに解放するだけなので、ファイルの内容をメモリに保持する必要はありません。

これはgit-for-windows#1315を修正します


1

AntでDot Netアプリケーションを構築するときに、これらのエラーが発生しました。

私の場合は、企業のバックアップソフトウェアであるSymantec DLO Agentでした。停止して、ウイルス対策ソフトウェアのディレクトリを除外し、Visual Studioを閉じると、動作するようです。


1

私の場合、プロジェクトルートのobjフォルダーを削除し、プロジェクトを再構築すると問題が解決しました!!!


0

このエラーが発生し、FxCopがプロジェクトに対して実行されていることが問題であることがわかりました。FxCopを閉じた後、再度コンパイルできました。


0

それがWebアプリケーションの場合、一時ASP.NETファイルフォルダー内のファイルを削除することが解決策になる可能性があります。


0

AQ Timeのようなプロファイラーを使用している場合、これらもファイルをロックしている可能性があります。この場合の解決策は、プロファイラーを再起動するか、プロファイラーから問題のアセンブリを単にアンロード/ロードすることです。AQ Timeの場合、しばらくするとファイルが解放されることに気付きましたが、一生、タイムアウトが何であるかを知ることはできません。ランダムに見える



0

問題の「more」vsファイルが別のコンソールで実行されたままになっているため、このエラーが発生しました。おっとっと。


0

上記のどれもこの問題を解決しませんでした。

ビルド構成でx64 CPUを使用するために、誰かが私のソリューションセットに1つのプロジェクトを持っています。Any CPUに変更すると、ビルドで新しいフォルダーが使用されます。どのプロセスがそのファイルをロックしているか(持っているか)はまだわかりません。


0

これと同じ問題がありました。一時フォルダーからdllを削除し、読み取り専用アクセスを削除してマシンを再起動し、機能させました。


0

私の場合、すべてのインスタンスを閉じてルートアプリケーションフォルダーをコピーし、別の場所に貼り付けてから、ソリューションをVSで開きます。


-1

私の問題は、Process Explorerでふるいにかけることによっても解決されました。ただし、私が強制終了しなければならないプロセスは、すべてのVSおよびSQLアプリケーションを閉じた後も実行されていたMySQL Notifier.exeでした。

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