Запрошенная операция не может быть выполнена в файле с открытым пользователем разделом

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

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

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

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

Ответ 1

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

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

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

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

EDIT:

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

Ответ 2

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

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

  • Другой фиктивный сценарий. Иногда просто удаляя весь объект или только файл, предупрежденный как заблокированный, помогает с этим crappy error.

Ответ 3

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

Ответ 4

Закройте визуальную студию, удалите корзину, отпустите папку выпуска и снова запустите визуальный проект студии. который исправил мою проблему

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

Ответ 9

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

Ответ 10

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

  1. Откройте "Диспетчер задач"
  2. Завершить задачу "Explorer.exe"
  3. Нажмите "Файл" → Создать новое задание - введите "explorer.exe" → ОК
  4. Очистите мой проект, и он работает

Ответ 11

У меня была та же проблема. Перезапуск не работал у меня. В диспетчере задач был запущен процесс под названием VBSCompiler. Мне пришлось закончить процесс, чтобы исправить эту ошибку.

Ответ 12

Ни одно из решений, размещенных здесь, не работало для меня. Это был файл devenv.exe(Visual Studio), блокирующий файл, но если бы я его перезапустил, он бы снова заблокировал его.

Необычно, Windows не позволит мне удалить файлы (в Корзину), но Shift + Delete (постоянное удаление) сработало.

Ответ 13

Удаление папки obj и восстановление для меня работало

Ответ 14

Закройте Visual Studio и запустите его как администратор. Это устранило мою проблему.

Ответ 15

Решение для меня заключалось в том, чтобы закрыть все экземпляры VS и убить любые зависающие процессы devenv.exe.

Ответ 16

Я видел эти ошибки при создании приложений Dot Net с помощью Ant.

В моем случае это было наше корпоративное программное обеспечение для резервного копирования, Symantec DLO Agent. Остановить его и исключить каталог в моем антивирусном программном обеспечении и закрыть Visual Studio, кажется, работает.

Ответ 17

Решением для меня было перезагрузить компьютер.

Ответ 18

в моем случае удалил папку obj в корне проекта и восстановил проект, решив мою проблему!!!

Ответ 19

It has been Эндрю Катберт in 2016 by указал в 2016 году, что git diff также блокирует файлы, пока вы не выйдете из него.

Это не будет иметь место с Git 2.23 (3 квартал 2019 года)

См. коммит 3aef54e (11 июля 2019 г.) от Йоханнеса Шинделина (dscho).
(Merged by Junio C Hamano -- [TG41] -- in commit d9beb46, 25 Jul 2019)

diff: содержимое файла munmap() перед запуском внешнего diff

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

Итак, давайте удостоверимся, что сам TG45 не держит открытых дескрипторов рассматриваемых файлов.

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

This fixes git-for-windows#1315

Ответ 20

Я столкнулся с этой ошибкой, и оказалось, что проблема была в FxCop для моего проекта. Я закрыл FxCop, а затем снова смог скомпилировать.

Ответ 21

Если это веб-приложение, удаляющее файлы в папке Временные файлы ASP.NET, может быть решением.

Ответ 22

Если вы используете профилировщики, такие как AQ Time, они также могут блокировать файл. Решением в этом случае было бы перезапустить профилировщик или просто выгрузить/загрузить сборку, о которой идет речь, из профилировщика. Для AQ Time я заметил, что он выпустил файл через некоторое время, но я не могу на всю жизнь рассказать, что это за тайм-аут. Кажется случайным

Ответ 23

У меня также появилась такая же ошибка сегодня. Я решил эту проблему, перестроив проект.

Ответ 24

У меня была эта ошибка, вызванная тем, что файл "more" и "v" обсуждались в другой консоли. К сожалению.

Ответ 25

Я закрыл все открытые документы в VS и перезапустил VS, потом все заработало.

Ответ 26

Моя проблема также была решена путем просеивания через Process Explorer. Однако процесс, который мне пришлось убить, был MySQL Notifier.exe, который все еще работал после закрытия всех приложений VS и SQL.