Почему я получаю ошибки "файл используется другим процессом" при отладке в 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 говорит, что они не могут воспроизвести это в лаборатории, потому что они имеют нетронутую систему или просто создают дымовые завесы. Я буквально вытягиваю свои волосы этим.