У меня есть простое решение WinForms в VS 2010. Каждый раз, когда я создаю его, выходной файл (bin\debug\app.exe) заканчивается заблокированный, и последующий сбой сборок с сообщением как "The process cannot access the file 'bin\Debug\app.exe' because it is being used by another process."
Единственный способ разработать проект состоит в том, чтобы перезапустить VS после каждой сборки, которая является очень неловкой.
Я нашел это старое сообщение в блоге http://blogs.geekdojo.net/brian/archive/2006/02/17/VS2005FileLocking.aspx - кажется, что проблема действительно стара. Кто-либо знает то, что происходит здесь, или по крайней мере некоторое обходное решение?
Обновление
Я на самом деле не петляю. Блокировка происходит после сборки, не после отладки (т.е. запускают VS - сборку - сборку - сбой!) И я пытался выключить антивирус. Это не помогает.
Обновление 2
Проводник процесса показывает devenv.exe, загружавший файл (в DLLs, не в Дескрипторах). Кажется, что некоторый незначительный сбой во время сборки предотвратил разгрузку, но (первая) сборка завершается без любых сообщений другой тогда "1 следовавший, o отказавший" /
]Я создал новое пустое решение и добавил в него все старые файлы. Это как-то решило проблему.[
]А как же вирусные сканеры на вашем компьютере? Вы видите какие-нибудь процессы, которые управляют вашим файлом (используйте Проводник процессов , чтобы это выяснить)?
Может быть, в списке процессов видно "app.exe", т.е. последняя отлаженная вами версия все еще запущена? Когда вы разрабатываете приложения, которые имеют несколько потоков, это может произойти, если вы не присоединяете
все из них.
Я видел это либо на жадном программном обеспечении для сканирования вирусов, либо если app.exe не закрывается должным образом. Убедитесь, что процесс все еще не запущен.
Имел такую же проблему, но нашел решение (спасибо Keyvan Nayyeri):
Но как это решить? Существуют различные способы в зависимости от типа вашего проекта, но одно простое решение, которое я рекомендую разработчикам дополнений Visual Studio - это добавить простой код в события сборки проекта.
Вы можете добавить следующие строки кода в командную строку события предварительной сборки вашего проекта.
if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if exist "$(TargetPath)" if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"