Почему я получаю ошибки «файл используется другим процессом» при отладке в Visual Studio?

Вопрос:Используя бета-версию Visual Studio 2010, когда я запускаю свое приложение в среде IDE для отладки, он работает отлично в первый раз. Однако после закрытия сеанса отладки, либо закрыв приложение, либо нажав кнопку остановки отладки, все последующие попытки отладки приложения завершились неудачей: Ошибка 1 Не удалось скопировать файл "objDebugApplication.dll" в "BinDebugApplication.dll". Процесс не может получить доступ

Вопрос:

Используя бета-версию Visual Studio 2010, когда я запускаю свое приложение в среде IDE для отладки, он работает отлично в первый раз. Однако после закрытия сеанса отладки, либо закрыв приложение, либо нажав кнопку остановки отладки, все последующие попытки отладки приложения завершились неудачей:

Ошибка 1 Не удалось скопировать файл “objDebugApplication.dll” в “BinDebugApplication.dll”. Процесс не может получить доступ к файлу ‘BinDebugApplication.dll’ потому что он используется другим процесс.

Handle.exe из SysInternals показывает, что дескрипторы открыты, но даже если я закрываю дескрипторы, ошибка не исчезает. Любые попытки удалить файл вручную приводят к сообщению об ошибке “Отказано в доступе”.

Чтобы исправить это, я должен полностью перезапустить Visual Studio, после чего сеанс Debug будет работать один раз и снова остановится.

Я не совсем уверен, когда это началось, но я довольно уверен в этом совсем недавно.

UPDATE. После принудительного закрытия дескрипторов на Application.dll, я получаю следующую ошибку от VS:

Ошибка 1 Не удалось скопировать файл “OBJDebugApplication.dll” в “BinDebugApplication.dll”. Запрошенная операция не может быть выполняется в файле с отображаемым пользователем раздел открыт.

Какая черта – это “отображаемый пользователем раздел”?

ОБНОВЛЕНИЕ 2. Похоже, что эта проблема возникает, когда при попытке отладки у меня есть форма, открытая в представлении “Дизайн”. Я собираюсь сделать еще несколько проблем, а затем опубликовать результаты.

ОБНОВЛЕНИЕ 3. Я думаю, что я сузил его до формы с помощью UserControl.

Лучший ответ:

Честно говоря, это звучит как ошибка в VS2010. По какой-то причине он не закрывает открытые ручки, когда отладчик останавливается. Убивание процесса VS автоматически закрывает эти дескрипторы, что позволяет снова получить доступ к файлу. Как работа, вы можете смотреть unlocker бесплатно и работать исключительно хорошо. Я знаю, что это не отличный ответ, но он должен быть быстрее, чем перезапуск VS. Возможно, вам стоит отправить сообщение об ошибке…

Изменить: Unlocker не работает на 64-разрядной ОС, LockHunter.

Ответ №1

Вот как я решил эту проблему

* Я открываю проект Properties,
* выберите вкладку сборки,
* Очистить выходной путь,
* и buid (это создаст dll в корневой папке)
* вернитесь к пути вывода и выберите просмотр (перейдите в каталог bin для отладки/выпуска) и voila!

Ответ №2

Я видел, что служба индексирования Windows вызывает это. Отключение этого помогло. Вирусные сканеры также могут быть виноваты. Mutliple Application.Close() вызовы также могут вызвать это.

EDIT: Конечно, поскольку он всегда работает в первый раз, я полагаю, что это маловероятно.

Ответ №3

В соответствии с Ошибка: не удается получить доступ к файловому ящику /Debug/… потому что он используется другим процессом ответа TarmoPikaro, иногда Visual Studio создает несколько процессов-призраков msbuild.exe, которые сохраняются после сборки. Кажется, что эти призрачные процессы вызывают блокировки файлов.

Решение 1 – Убейте призрака MSBuild.exe

Убийство msbuild.exe – это одноразовое решение, оно должно выполняться на основе сборки.

Вы можете убить процессы следующим образом mrtumnus:

taskkill/f/im MSBuild.exe

Решение 2 – Отключите параллельные сборки в Visual Studio

Вы можете отключить параллельную сборку раз и навсегда:

Инструменты > Параметры > Проекты и решения > Сборка и запуск > “Максимальное количество параллельных проектов” – по умолчанию оно имеет значение 8, переключится на 1.

Конечно, сборки теперь немного медленнее, но пробег может варьироваться в зависимости от вашего варианта использования.

Это связано с
Ошибка: не удается получить доступ к файловому bin/Debug/… потому что он используется другим процессом

Ответ №4

Была та же проблема. Следующие вещи помогли

  • Закрытие всех файлов проекта при отладке
  • с помощью разблокировки

Также мое приложение открывает порт. В то время как отладка была исключена, программа закрылась. По окончании программы я закрыл порт. Это тоже помогло.

Но определенно, ошибка с VS2010.

Ответ №5

Я столкнулся с той же проблемой, и в моем случае у меня был открытый файл в Visual Studio. Помогло закрыть все файлы.

Ответ №6

Я столкнулся с такой же ошибкой, и я застрял в ней много дней. Наконец, решила проблему.
Я работал над проектом, в котором было добавлено много классных библиотек. Я добавил ссылку на эти библиотеки в свой основной проект и по ошибке

added reference to same project to itself. So when I removed self reference, it worked. Ответ №7

Это так расстраивает. На самом деле думать о переходе на VS2013 и VS2010 нагружено проблемами, и MS, похоже, не заботится. У некоторых из нас действительно нет роскоши платить за новое программное обеспечение, но, похоже, мне придется укусить пулю. У меня была эта проблема постоянно более двух недель. Я очистил любые настройки для VS2010, я, возможно, использовал devenv/Resetsettings, запустил VS2010 в качестве администратора и все еще получаю эту проблему. Когда MS говорит, что они не могут воспроизвести это в лаборатории, потому что они имеют нетронутую систему или просто создают дымовые завесы. Я буквально вытягиваю свои волосы этим.

Оцените статью
Добавить комментарий