c# obj debug - Visual Studio «Не удалось скопировать» ... во время сборки





15 Answers

В Visual Studio Premium 2013 (обновление 3) я решил это с помощью встроенного однострочного интерфейса:

(if exist "$(TargetDir)*old.pdb" del "$(TargetDir)*old.pdb") & (if exist "$(TargetDir)*.pdb" ren "$(TargetDir)*.pdb" *.old.pdb)

Это изящно удаляет любые старые файлы PDB (если возможно), а затем переименовывает все, что осталось с расширением .old.pdb . Хорошим побочным эффектом является то, что если старый PDB все еще заблокирован, он просто добавляет еще одну .old часть в имя файла, и все они будут очищены в следующий раз, когда вы перезапустите Visual Studio и выполните сборку.

Например, сборка / отладка сеанса 1 оставляет MyProject.pdb заблокированным.
В следующий раз, когда вы создадите:
MyProject.pdb -> MyProject.old.pdb

Затем запускается сборка / отладка сеанса 2, и оба MyProject.pdb и MyProject.old.pdb по-прежнему заблокированы:
MyProject.old.pdb -> MyProject.old.old.pdb
MyProject.pdb -> MyProject.old.pdb

Наконец, перезапуск Visual Studio и создание новой сборки избавятся от обоих из них и продолжат процесс, как обычно.

удается файл отказано

Я продолжаю получать эту ошибку во время сборки моего проекта VS2012 C #

Error   41  Could not copy "obj\Debug\WeinGartner.WeinCad.exe" to
 "bin\Debug\WeinGartner.WeinCad.exe". 
 Exceeded retry count of 10. Failed.    


Error   42  Unable to copy file "obj\Debug\WeinGartner.WeinCad.exe" to
"bin\Debug\WeinGartner.WeinCad.exe". The process cannot access the file
'bin\Debug\WeinGartner.WeinCad.exe' because it is being used by another 
process.    

Теперь я понял, что убийство процесса

Weingartner.WeinCad.vhost.exe

работает (иногда), но это нервничает. Любой способ остановить это вообще?

Настройки моего отладчика




.vhost.exe - это процесс отладчика, поэтому кажется, что процесс, отлаживаемый, не закрывается должным образом. Скорее всего, у вас есть ошибка, которая поддерживает ее и не останавливает процесс отладки правильно - есть варианты отсоединения от процесса, когда вы нажимаете «остановить отладку» вместо фактического убийства отладчика, поэтому, возможно, у вас есть этот набор.

Но в этом проблема - файл, который вы пытаетесь скопировать, заблокирован (т. Е. Все еще используется) ОС, поэтому он предотвращает копирование. Убедитесь, что файл свободен, и вы сможете копировать.




Вы должны отключить антивирус (особенно если это Avast) и повторите попытку. Это помогло мне. Проблема в том, что debugger / builder создает файл .exe, который был идентифицирован как угроза Avast и поэтому удален прямо до его выполнения VS.




Цитата:

Обходной путь заключается в том, чтобы поместить это в свойство командной строки события Pre-build проекта> project (на вкладке «События сборки»):

Фрагмент кода

if exist "$(TargetPath).locked" del "$(TargetPath).locked"

if exist "$(TargetPath)" if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"



исключение

В некоторых случаях в Visual Studio, когда вы (Build || Rebuild) поверх запуска IISExpress вы столкнулись с этим Исключением:

Не удалось скопировать файл «obj \ Debug \ YourProjectName.dll» в bin \ YourProjectName.dll. Процесс не может получить доступ к файлу 'bin \ YourProjectName.dll', потому что он используется другим процессом

Решение

  1. Щелкните правой кнопкой мыши веб-проект, который нужно построить.
  2. Нажмите на свойства.
  3. Выберите вкладку «Сборка событий» на левой стороне.
  4. В командной строке Pre-build вставьте эти две строки:
tasklist /fi "imagename eq iisexpress.exe" |find ":" > nul
if errorlevel 1 taskkill /f /im "iisexpress.exe"

Вы хороши 2 GO!




Думаю, я решил удалить галочку, чтобы Break all processes when one process breaks на опции отладки (первый вариант снимка экрана -> второй).
Это было хорошо работает / работает хорошо, так как я снял флажок.
Я использую элементы MySql NET Connector и DevExpress в своем проекте. Возможно, один из них не располагал соединениями, привязками и т. Д., Потому что этот флаг активирован.

EDITED: определенно это работает! Нет больше «Не удалось скопировать файл» и больше ошибок конструктора форм.




Добавить в событие предварительной сборки вашего главного проекта taskkill / f / fi "pid gt 0" / im "YourProcess.vshost.exe"




Я не могу дать решение, чтобы предотвратить это, но вы можете хотя бы RENAME заблокированный файл (Windows Explorer или классическое командное окно), а затем компилировать / строить. Не нужно перезагружать или перезапускать VS201x. С некоторым опытом вы можете добавить скрипт предварительной сборки для удаления старых файлов или переименования, а затем вне зависимости от того, есть ли блокировка.




@ Ответ Джеффа ( https://.com/a/25251766/3739540 ) хорош, но он пересказывает код ошибки 1 при перекомпиляции.

Вот что сработало для меня (2> nul 1> nul на конце + выход 0):

(if exist "$(TargetDir)*old.pdb" del "$(TargetDir)*old.pdb") & (if exist "$(TargetDir)*.pdb" ren "$(TargetDir)*.pdb" *.old.pdb) 2>nul 1>nul
(if exist "$(TargetDir)*old.dll" del "$(TargetDir)*old.dll") & (if exist "$(TargetDir)*.dll" ren "$(TargetDir)*.dll" *.old.dll) 2>nul 1>nul
exit 0



  1. Откройте свойства проекта [меню> проект> свойства]
  2. Выберите вкладку «Отладка»
  3. Снимите флажок «Включить визуальный студийный хостинг»
  4. Начать отладку [F5]
  5. Вы получите предупреждение о безопасности, просто «хорошо». Позволяет запускать приложение
  6. Остановить отладку.
  7. Установите флажок «Включить процесс хостинга визуальной студии» на вкладке «Отладка»,
  8. Теперь попробуйте начать отладку, вы не увидите ошибку снова

[Работа для меня]




Если ни один из ответов не работает, попробуйте эту простую проверку. Найдите для любого MSbuild.exe запуск и проведение проекта EXE. Убейте MSBuild.exe, и вам должно быть хорошо.




Этот вопрос был первым результатом при поиске следующей ошибки:

Не удалось скопировать файл «...», потому что он не был найден.

при создании в Visual Studio 2013 (обновление 3).

Решение: Деинсталляция «Электроинструментов производительности» в Visual Studio 2013.

https://connect.microsoft.com/VisualStudio/feedback/details/533411




Я не понимал, что все еще подключен мой отладчик и пытался создать тот же экземпляр Visual Studio. Как только я остановил отладчик, я смог построить.




Для меня это был антивирус Avast, который не позволял визуальной студии писать / читать / выполнять файл. Поэтому мне пришлось добавить папку Visual studio 2010/2012 в список исключений антивируса. И сразу после этого баам ... он работает.




Я заметил некоторые ответы, которые решили мою проблему, НО, на всякий случай у меня такая же проблема.

ЕСЛИ ВЫ ИСПОЛЬЗУЕТЕ КОНСОЛЬНОЕ ПРИЛОЖЕНИЕ: ПЕРЕД ТЫ ДЕЛАЕТЕ ЧТО-НИБУДЬ.

Убедитесь, что вы закрыли все окна консоли, которые, возможно, были открыты из предыдущей сборки. Например, я просто тестировал некоторый код в консольном приложении, я не понимал, что окно консоли из одного из предыдущих времен, когда я запускал свою программу, было открытым. Во время этой сессии я отлаживал, окно было отброшено назад, и я не мог его увидеть. Просто говоря, это может быть вашей проблемой, поэтому убедитесь, что это не проблема.






Related