Сбой сборки Visual Studio: невозможно скопировать exe-файл из obj \ debug в bin \ debug - PullRequest
189 голосов
/ 24 мая 2010

Обновление: Пример проекта, воспроизводящего эту ошибку, можно найти здесь, в Microsoft Connect . Я также проверил и подтвердил, что решение, приведенное в принятый ответ ниже , работает с этим примером проекта. Если это решение не работает для вас, возможно, у вас другая проблема (которая относится к отдельному вопросу).


Этот вопрос задавался ранее, как здесь, в Переполнении стека, так и в других местах, но ни одно из предложенных мною предложений не помогло мне, поэтому я просто должен попытаться задать новый вопрос.

Сценарий: у меня есть простое приложение Windows Forms (C #, .NET 4.0, Visual Studio 2010). Он имеет несколько базовых форм, от которых наследуется большинство других форм, он использует Entity Framework (и классы POCO) для доступа к базе данных. Ничего особенного, нет многопоточности или чего-то еще.

Проблема: некоторое время все было хорошо. Затем совершенно неожиданно Visual Studio не удалось собрать, когда я собирался запустить приложение. Я получил предупреждение "Невозможно удалить файл '... bin \ Debug \ [ProjectName] .exe'. Доступ к пути '... bin \ Debug \ [ProjectName] .exe' запрещен." * " 1019 * и ошибка "Невозможно скопировать файл 'obj \ x86 \ Debug \ [ProjectName] .exe' в 'bin \ Debug \ [ProjectName] .exe'. Процесс не может получить доступ к файлу 'bin \ Debug \ [ProjectName] .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):

    <GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>
    

Однако, ни один из них не работал для меня, так что вы, вероятно, можете понять, почему я начинаю немного расстраиваться. Я не знаю, где еще искать, поэтому я надеюсь, что кому-то есть, что мне дать! Это ошибка в VS, и если да, то есть ли патч? Или я сделал что-то не так, у меня есть круговая ссылка или что-то подобное, и если да, то как я могу узнать?

Любые предложения высоко ценятся:)

Обновление: Как уже упоминалось в комментарии ниже, я также проверил с помощью Process Explorer, что он на самом деле является Visual Studio, которая блокирует файл.

Ответы [ 35 ]

0 голосов
/ 01 июля 2016

Одна вещь, которая действительно помогла мне, это добавить «.exe» в папку «Отладка» в раздел «Исключения на моем антивирусе».

0 голосов
/ 02 марта 2016
  1. Установить другой проект для запуска
  2. Сборка проекта (отобразится проект без проблем)
  3. Перейдите в проблемную папку bin\debug
  4. Переименовать myservice.vshost.exe в myservice.exe
0 голосов
/ 17 июня 2015

Это помогает мне после того, как я уберу флаг «Только чтение» из каталога bin. http://www.thewindowsclub.com/error-0x80080015-windows-defender-activation-requires-display-name

0 голосов
/ 06 марта 2013

Я знаю, что это очень старый вопрос, но недавно я столкнулся с ошибкой «невозможно скопировать из obj to bin» в VS 2012. Каждый раз, когда я пытался перестроить определенный проект, я получал сообщение. Единственным решением было сделать чистку перед каждой перестройкой.

После долгих расследований выяснилось, что в одном из моих файлов было предупреждение о неполной прагме, которое не препятствовало успешной компиляции, но каким-то образом сбивало VS с толку, чтобы сохранить файл (ы) заблокированным.

В моем случае в верхней части файла было следующее:

#pragma warning(

Вот и все. Я предполагаю, что некоторое время назад пытался что-то сделать, отвлекся и никогда не заканчивал процесс, но предупреждения VS об этой конкретной строке были потеряны в случайном порядке. В конце концов я заметил предупреждение, удалил строку и с тех пор каждый раз заново работаю.

0 голосов
/ 22 марта 2012

Я пробовал несколько предоставленных вами решений, но иногда я все еще получаю эту ошибку.Я уверен, что мой процесс не запущен, и когда я пытаюсь удалить исполняемый файл с помощью Internet Explorer, он удаляется из списка файлов, но затем я нажимаю F5 и вуаля, файл возвращается.Он не был удален вообще.

Но если я удаляю файл через TotalCommander, exe-файл фактически удаляется, и я могу успешно построить проект.

Я использую windows 7 x64 и total commander 7.56a 32 bit.

0 голосов
/ 09 января 2013

Сначала сделайте простые вещи.

Убедитесь, что часть вашего решения не заблокирована запущенным процессом.

Например, я запустил «InstallUtil» в своей службе Windows (которую яобычно модульное тестирование с консоли).

Это заблокировало некоторые из моих библиотек в папке bin проекта службы Windows. Когда я сделал перестройку, я получил исключение в этом вопросе.

Iостановил службу Windows, перестроил и все прошло успешно.

Проверьте диспетчер задач Windows для своего приложения, прежде чем выполнять какие-либо дополнительные действия в этом вопросе.

Поэтому, когда вы слышите шаги, подумайте, что лошади незебры! (от студента-медика)

0 голосов
/ 23 января 2015

У меня была такая же проблема. Он сказал, что не может скопировать из bin \ debug в obj .....

Когда я строил веб-проект, я обнаружил, что все мои dll были в папке bin, а не в bin \ debug. Во время публикации vs искал файлы в bin \ debug. Поэтому я открыл файл веб-проекта в редакторе и посмотрел экземпляры bin \ debug и обнаружил, что все библиотеки DLL упоминаются как bin \ debug \ mylibrary.dll. Я удалил все \ debug с пути и опубликовал снова. На этот раз vs удалось найти все dll в папке bin и публикация прошла успешно.

Я понятия не имею, как этот путь изменился в файле веб-проекта.

Я потратил более 5 часов на отладку и, наконец, нашел решение самостоятельно.

Это правильный ответ .

0 голосов
/ 09 сентября 2014

Я нашел с VS2013 Я регулярно получаю эту ошибку. Что-то, что, кажется, работает достаточно хорошо - это выполнить решение Rebuild перед попыткой запустить приложение. Я обнаружил, что выполнение CLEAN иногда работает, но решение Rebuild, кажется, работает более последовательно.

0 голосов
/ 21 августа 2014

Мое решение не имеет ничего общего с версиями, процессами, заблокированными, перезапуском или удалением файлов.

Проблема была на самом деле из-за сбоя сборки и не выдает правильную ошибку,Фактическая проблема заключалась в конструктивном недостатке:

// Either this should be declared outside the function, or..
SomeObject a = new SomeObject(); 

Task.Factory.StartNew(() =>
{
   while (true)
   {
      a.waitForSomething();
   }
});

// ...this should not be called
a.doSomething(); 

После изменения области действия «a» за пределами функции или без использования «a» после Task.Factory.StartNew(); я смог построить снова.

Это произошло при использовании VS2012 Update 4 в Windows7x64 sp1.

Сообщение об ошибке:

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (3390,5): ошибка MSB3030: не удалось скопировать файл "obj \ x86 \ Debug \ xxx.exe", так как он не был найден.

0 голосов
/ 11 февраля 2013

Ни один из других ответов не помог мне, но закрытие всех открытых вкладок в Visual Studio, похоже, решило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...