Почему я получаю ошибки "файл используется другим процессом" при отладке в Visual Studio?
Используя бета-версию Visual Studio 2010, когда я запускаю свое приложение в среде IDE для отладки, он работает отлично в первый раз. Однако после закрытия сеанса отладки, либо закрыв приложение, либо нажав кнопку остановки отладки, все последующие попытки отладки приложения завершились неудачей:
Ошибка 1 Не удалось скопировать файл "obj\Debug\Application.dll" в "Bin\Debug\Application.dll". Процесс не может получить доступ к файлу 'Bin\Debug\Application.dll' потому что он используется другим процесс.
Handle.exe из SysInternals показывает, что дескрипторы открыты, но даже если я закрываю дескрипторы, ошибка не исчезает. Любые попытки удалить файл вручную приводят к сообщению об ошибке "Отказано в доступе".
Чтобы исправить это, я должен полностью перезапустить Visual Studio, после чего сеанс Debug будет работать один раз и снова остановится.
Я не совсем уверен, когда это началось, но я довольно уверен в этом совсем недавно.
UPDATE. После принудительного закрытия дескрипторов на Application.dll, я получаю следующую ошибку от VS:
Ошибка 1 Не удалось скопировать файл "OBJ\Debug\Application.dll" в "Bin\Debug\Application.dll". Запрошенная операция не может быть выполняется в файле с отображаемым пользователем раздел открыт.
Какая черта - это "отображаемый пользователем раздел"?
ОБНОВЛЕНИЕ 2. Похоже, что эта проблема возникает, когда при попытке отладки у меня есть форма, открытая в представлении "Дизайн". Я собираюсь сделать еще несколько проблем, а затем опубликовать результаты.
ОБНОВЛЕНИЕ 3. Я думаю, что я сузил его до формы с помощью UserControl.
Ответы
Ответ 1
Честно говоря, это звучит как ошибка в VS2010. По какой-то причине он не закрывает открытые ручки, когда отладчик останавливается. Убивание процесса VS автоматически закрывает эти дескрипторы, что позволяет снова получить доступ к файлу. Как работа, вы можете смотреть unlocker бесплатно и работать исключительно хорошо. Я знаю, что это не отличный ответ, но он должен быть быстрее, чем перезапуск VS. Возможно, вам стоит отправить сообщение об ошибке...
Изменить: Unlocker не работает на 64-разрядной ОС, LockHunter.
Ответ 2
Вот как я решил эту проблему
* Я открываю проект Properties,
* выберите вкладку сборки,
* Очистить выходной путь,
* и buid (это создаст dll в корневой папке)
* вернитесь к пути вывода и выберите просмотр (перейдите в каталог bin для отладки/выпуска) и voila!
Ответ 3
Я видел, что служба индексирования Windows вызывает это. Отключение этого помогло. Вирусные сканеры также могут быть виноваты. Mutliple Application.Close() вызовы также могут вызвать это.
EDIT: Конечно, поскольку он всегда работает в первый раз, я полагаю, что это маловероятно.
Ответ 4
В соответствии с Ошибка: не удается получить доступ к файловому ящику /Debug/... потому что он используется другим процессом ответа TarmoPikaro, иногда Visual Studio создает несколько процессов-призраков msbuild.exe, которые сохраняются после сборки. Кажется, что эти призрачные процессы вызывают блокировки файлов.
Решение 1 - Убейте призрака MSBuild.exe
Убийство msbuild.exe - это одноразовое решение, оно должно выполняться на основе сборки.
Вы можете убить процессы следующим образом mrtumnus:
taskkill/f/im MSBuild.exe
Решение 2 - Отключите параллельные сборки в Visual Studio
Вы можете отключить параллельную сборку раз и навсегда:
Инструменты > Параметры > Проекты и решения > Сборка и запуск > "Максимальное количество параллельных проектов" - по умолчанию оно имеет значение 8, переключится на 1.
Конечно, сборки теперь немного медленнее, но пробег может варьироваться в зависимости от вашего варианта использования.
Это связано с
Ошибка: не удается получить доступ к файловому bin/Debug/... потому что он используется другим процессом
Ответ 5
Была та же проблема. Следующие вещи помогли
- Закрытие всех файлов проекта при отладке
- с помощью разблокировки
Также мое приложение открывает порт. В то время как отладка была исключена, программа закрылась. По окончании программы я закрыл порт. Это тоже помогло.
Но определенно, ошибка с VS2010.
Ответ 6
Я столкнулся с той же проблемой, и в моем случае у меня был открытый файл в Visual Studio. Помогло закрыть все файлы.
Ответ 7
Я столкнулся с такой же ошибкой, и я застрял в ней много дней. Наконец, решила проблему.
Я работал над проектом, в котором было добавлено много классных библиотек. Я добавил ссылку на эти библиотеки в свой основной проект и по ошибке
added reference to same project to itself. So when
I removed self reference, it worked.
Ответ 8
Это так расстраивает. На самом деле думать о переходе на VS2013 и VS2010 нагружено проблемами, и MS, похоже, не заботится. У некоторых из нас действительно нет роскоши платить за новое программное обеспечение, но, похоже, мне придется укусить пулю. У меня была эта проблема постоянно более двух недель. Я очистил любые настройки для VS2010, я, возможно, использовал devenv/Resetsettings, запустил VS2010 в качестве администратора и все еще получаю эту проблему. Когда MS говорит, что они не могут воспроизвести это в лаборатории, потому что они имеют нетронутую систему или просто создают дымовые завесы. Я буквально вытягиваю свои волосы этим.