Ошибка сборки Visual Studio: не удается скопировать exe-файл из objdebug в bindebug
обновление:образец проекта, воспроизводящего эту ошибку, можно найти здесь, в Microsoft Connect. Я также протестировал и проверил, что решение, данное в принятый ответ ниже работает над этим образцом проекта. Если это решение не работает для вас, у вас, вероятно, есть другая проблема (которая относится к отдельному вопросу).
это вопрос, заданный ранее, как здесь на стеке Переполнение и другие места, но ни одно из предложений, которые я нашел до сих пор, не помогло мне, поэтому я просто должен попробовать задать новый вопрос.
сценарий: у меня есть простое приложение Windows Forms (C#, .NET 4.0, Visual Studio 2010). Он имеет несколько базовых форм, которые наследуют большинство других форм, он использует Entity Framework (и классы POCO) для доступа к базе данных. Ничего особенного, никакой многопоточности или чего-то еще.
проблема: все было хорошо на некоторое время. Затем, все из ниоткуда, Visual Studio не удалось построить, когда я собирался запустить приложение. Я получил предупреждение "невозможно удалить файл '...binDebug[Имяпроекта].exe'. Доступ к пути '...binDebug[Имяпроекта].exe ' отказано." ошибка "невозможно скопировать файл' objx86Debug[Имяпроекта].exe ' to ' binDebug[имя проекта].exe'. Процесс не может получить доступ к файлу ' binDebug[имя_проекта].exe', потому что он используется другим процессом." (я получаю как предупреждение, так и ошибку при запуске Rebuild, но только ошибка при запуске Build - не думаю, что это актуально?)
Я прекрасно понимаю, что говорится в предупреждении и сообщении об ошибке: Visual Studio явно пытается перезаписать exe-файл, в то время как он по какой-то причине заблокирован. Однако это не помогает мне найти решение проблемы... Единственное, что я нашел, это закрыть Visual Studio и запустить его снова. Строительство и запуск затем работает, пока я не сделаю измените некоторые формы, тогда у меня снова будет та же проблема и придется перезапустить... Довольно неприятно!
Как я уже упоминал выше, это, кажется, известная проблема, поэтому есть много предложенных решений. Я просто перечислю то, что я уже пробовал здесь, чтобы люди знали, что пропустить:
- создание нового чистого решения и просто скопируйте файлы из старого решения.
добавление следующего к следующему в предварительную сборку проекта событие:
if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if not exist "$(TargetPath).locked" if exist "$(TargetPath)" move "$(TargetPath)" "$(TargetPath).locked"
добавление в свойства проекта (.csproj file):
<GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>
любые предложения высоко ценятся :)
обновление: как уже упоминалось в комментарии ниже, я также проверил с помощью Process Explorer, что это на самом деле и Visual Studio, которая блокирует файл.
Comments