Запрошенная операция не может быть выполнена для файла с открытым разделом, отображенным пользователем - PullRequest
185 голосов
/ 11 января 2011

Всякий раз, когда я пытался скопировать 4 файла в папку bin, после остановки основного сервиса я получаю сообщение об ошибке с одним файлом (TexteDll).Ошибка:

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

Это может быть связано с блокировкой системы.Или, возможно, другой процесс использует эту DLL.Когда я гуглил, я обнаружил, что перезагрузка системы может решить эту проблему.

Кто-нибудь может предложить причину или решение для этого?Я проверил свойства TexteDll (общие, версия, безопасность и т. Д.).Все выглядит нормально.

Ответы [ 24 ]

168 голосов
/ 12 марта 2013

В моем случае это был Проводник, который блокировал DLL, скомпилированную в папке Debug ... Странно, не правда ли?

Я узнал, используя инструмент под названием Unlocker.

Пришлось удалять с помощью Unlocker, даже когда он говорил, что файл не заблокирован, и я не мог удалить папку, пока не удалил этот единственный файл ...

После этого он скомпилировался.

РЕДАКТИРОВАТЬ:

Я выяснил, почему в моем случае это происходило.Я открыл DLL в текстовом редакторе в Visual Studio ...

70 голосов
/ 19 февраля 2014
  • Иногда при двойном щелчке на предупреждение о ссылках несоответствие версии сборки между двумя или более проектами, которые вы забыли закройте окно просмотра сборки, и оно останется там среди других вкладки ... так что в итоге сборка будет заблокирована VS сам, и мне потребовалось довольно много времени, чтобы понять это:)

    Будьте осторожны с мощностью, которую обеспечивает VS;)

  • Еще один глупый сценарий. Иногда просто удаляя весь объект папка или только файл, предупреждаемый, поскольку заблокированный помогает с этим дерьмовая ошибка.
32 голосов
/ 02 сентября 2013

закройте все документы на VS и попробуйте пересобрать заново. Если это не работает, перезапустите VS. Эта проблема связана с блокировкой DLL-файлов.

10 голосов
/ 27 сентября 2012

У меня была такая же проблема, и в моем случае оказалось, что существующий выходной файл был заблокирован другим приложением.

Вы можете проверить, какое приложение блокирует ваш выходной файл с помощью OpenedFilesView: http://www.nirsoft.net/utils/opened_files_view.html

10 голосов
/ 18 марта 2014

Закройте Visual Studio, удалите bin, отладочную папку выпуска и запустите проект Visual Studio снова. это решило мою проблему

9 голосов
/ 22 марта 2016

Другие уже установили, что эта ошибка связана с тем, что другое приложение заблокировало файл.Просто хотел отметить, что git diff также блокирует файлы, пока вы не выйдете из него.Вот что вызвало это в моем случае.

8 голосов
/ 28 октября 2015

Я разработчик и не люблю приложения, добавленные в Registery, как Unlocker.Я использовал SysInternals Process Explorer , который заблокировал мою DLL Find > Find Handle or Dll [Ctrl-F] и убил процесс.

6 голосов
/ 29 августа 2015

В моем случае мне пришлось убить зависший процесс MSBuild.exe, который блокировал файл (он был там даже после закрытия Visual Studio).

5 голосов
/ 12 сентября 2012

Работаете ли вы с антивирусом?Возможно, что программное обеспечение AV (или какое-либо другое программное обеспечение) считывало файл, используя API-интерфейсы сопоставления файлов, что вызвало проблему.

4 голосов
/ 30 января 2019

У меня была такая же проблема. Как я решил это было:

  1. Открыть «Диспетчер задач»
  2. Завершить задачу «Explorer.exe»
  3. Нажмите «Файл» -> Создать новое задание - Введите «explorer.exe» -> ОК
  4. Очистить мой проект, и он работает
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...