Сбой сборки 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 ]

3 голосов
/ 27 ноября 2012

Вот еще одна возможность:

После получения этой ошибки в vs2012 / win7, я пошел и попытался удалить файл в каталоге bin, и проводник указал, что файл использовалсяXAML UI Designer.

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


и еще одна возможная причина:

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

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

РЕДАКТИРОВАТЬ: у меня это случалось несколько раз, даже недавно с VS2012, и оно исправляет это, как только я устанавливаю порядок сборки на правильные зависимости, убиваю любые процессы msbuild, которые VS оставил работающими, а затем перезапустите VS.Я просто убиваю процессы msbuild, чтобы быть уверенным, но закрытие VS также должно их убить.

Я обычно делаю так, чтобы это было рефакторингом проекта, так что он полагается на другой проект в рамках решения, которого не было 'T ссылки на последнюю сборку.Иногда кажется, что это сбивает с толку VS и не обновляет порядок сборки.

Чтобы проверить порядок сборки: щелкните правой кнопкой мыши Solution в Solution Explorer и выберите «Project Build Order ...» и убедитесь, что зависимостиправильно отмечены для каждого проекта.

3 голосов
/ 16 апреля 2015

Я столкнулся с той же ошибкой.

Я решил проблему, удалив все содержимое папок bin всех зависимых проектов / библиотек.

Эта ошибка в основном происходит из-за изменений версии.

3 голосов
/ 24 февраля 2011

Используя Visual Studio, я никогда не мог придумать простой проект для воспроизведения ошибки.

Моим решением было отключить процесс размещения Visual Studio.

Для тех, кто заинтересован, я прикрепил след ручки для ручки-нарушителя:

0:044> !htrace 242C
--------------------------------------
Handle = 0x000000000000242c - OPEN
Thread ID = 0x0000000000001cd0, Process ID = 0x0000000000001a5c

0x000000007722040a: ntdll!ZwCreateFile+0x000000000000000a
0x0000000074b4bfe3: wow64!whNtCreateFile+0x000000000000010f
0x0000000074b3cf87: wow64!Wow64SystemServiceEx+0x00000000000000d7
0x0000000074ac276d: wow64cpu!TurboDispatchJumpAddressEnd+0x0000000000000024
0x0000000074b3d07e: wow64!RunCpuSimulation+0x000000000000000a
0x0000000074b3c549: wow64!Wow64LdrpInitialize+0x0000000000000429
0x00000000772184c8: ntdll!LdrpInitializeProcess+0x00000000000017e2
0x0000000077217623: ntdll! ?? ::FNODOBFM::`string'+0x000000000002bea0
0x000000007720308e: ntdll!LdrInitializeThunk+0x000000000000000e
0x00000000773d0066: ntdll_773b0000!NtCreateFile+0x0000000000000012
0x000000007541b616: KERNELBASE!CreateFileW+0x000000000000035e
0x0000000075b42345: KERNEL32!CreateFileWImplementation+0x0000000000000069
0x000000006a071b47: mscorwks_ntdef!StgIO::Open+0x000000000000028c
--------------------------------------
Handle = 0x000000000000242c - CLOSE
Thread ID = 0x0000000000000cd4, Process ID = 0x0000000000001a5c

0x000000007721ffaa: ntdll!ZwClose+0x000000000000000a
0x0000000074b3f2cd: wow64!whNtClose+0x0000000000000011
0x0000000074b3cf87: wow64!Wow64SystemServiceEx+0x00000000000000d7
0x0000000074ac276d: wow64cpu!TurboDispatchJumpAddressEnd+0x0000000000000024
0x0000000074b3d07e: wow64!RunCpuSimulation+0x000000000000000a
0x0000000074b3c549: wow64!Wow64LdrpInitialize+0x0000000000000429
0x000000007724d177: ntdll! ?? ::FNODOBFM::`string'+0x000000000002bfe4
0x000000007720308e: ntdll!LdrInitializeThunk+0x000000000000000e
0x00000000773cf992: ntdll_773b0000!ZwClose+0x0000000000000012
0x0000000075b42642: KERNEL32!BaseRegCloseKeyInternal+0x0000000000000041
0x0000000075b425bc: KERNEL32!RegCloseKey+0x000000000000007d
*** WARNING: Unable to verify checksum for mscorlib.ni.dll
0x0000000068f13ca3: mscorlib_ni+0x0000000000233ca3
0x0000000069bc21db: mscorwks_ntdef!CallDescrWorker+0x0000000000000033
0x0000000069be4a2a: mscorwks_ntdef!CallDescrWorkerWithHandler+0x000000000000008e
--------------------------------------
Handle = 0x000000000000242c - OPEN
Thread ID = 0x00000000000006cc, Process ID = 0x0000000000001a5c

0x0000000077220e0a: ntdll!NtOpenKeyEx+0x000000000000000a
0x0000000074b5d1c9: wow64!Wow64NtOpenKey+0x0000000000000091
0x0000000074b5313b: wow64!whNtOpenKeyEx+0x0000000000000073
0x0000000074b3cf87: wow64!Wow64SystemServiceEx+0x00000000000000d7
0x0000000074ac276d: wow64cpu!TurboDispatchJumpAddressEnd+0x0000000000000024
0x0000000074b3d07e: wow64!RunCpuSimulation+0x000000000000000a
0x0000000074b3c549: wow64!Wow64LdrpInitialize+0x0000000000000429
0x000000007724d177: ntdll! ?? ::FNODOBFM::`string'+0x000000000002bfe4
0x000000007720308e: ntdll!LdrInitializeThunk+0x000000000000000e
0x00000000773d0fca: ntdll_773b0000!NtOpenKeyEx+0x0000000000000012
0x0000000075b42721: KERNEL32!LocalBaseRegOpenKey+0x000000000000010c
0x0000000075b428c9: KERNEL32!RegOpenKeyExInternalW+0x0000000000000130
0x0000000075b427b5: KERNEL32!RegOpenKeyExW+0x0000000000000021
--------------------------------------
Handle = 0x000000000000242c - CLOSE
Thread ID = 0x0000000000000cd4, Process ID = 0x0000000000001a5c

0x000000007721ffaa: ntdll!ZwClose+0x000000000000000a
0x0000000074b3f2cd: wow64!whNtClose+0x0000000000000011
0x0000000074b3cf87: wow64!Wow64SystemServiceEx+0x00000000000000d7
0x0000000074ac276d: wow64cpu!TurboDispatchJumpAddressEnd+0x0000000000000024
0x0000000074b3d07e: wow64!RunCpuSimulation+0x000000000000000a
0x0000000074b3c549: wow64!Wow64LdrpInitialize+0x0000000000000429
0x000000007724d177: ntdll! ?? ::FNODOBFM::`string'+0x000000000002bfe4
0x000000007720308e: ntdll!LdrInitializeThunk+0x000000000000000e
0x00000000773cf992: ntdll_773b0000!ZwClose+0x0000000000000012
0x0000000075b42642: KERNEL32!BaseRegCloseKeyInternal+0x0000000000000041
0x0000000075b425bc: KERNEL32!RegCloseKey+0x000000000000007d
0x0000000068f13ca3: mscorlib_ni+0x0000000000233ca3
0x0000000069bc21db: mscorwks_ntdef!CallDescrWorker+0x0000000000000033
0x0000000069be4a2a: mscorwks_ntdef!CallDescrWorkerWithHandler+0x000000000000008e
--------------------------------------
Handle = 0x000000000000242c - OPEN
Thread ID = 0x0000000000001cd0, Process ID = 0x0000000000001a5c

0x0000000077220e0a: ntdll!NtOpenKeyEx+0x000000000000000a
0x0000000074b5d1c9: wow64!Wow64NtOpenKey+0x0000000000000091
0x0000000074b5313b: wow64!whNtOpenKeyEx+0x0000000000000073
0x0000000074b3cf87: wow64!Wow64SystemServiceEx+0x00000000000000d7
0x0000000074ac276d: wow64cpu!TurboDispatchJumpAddressEnd+0x0000000000000024
0x0000000074b3d07e: wow64!RunCpuSimulation+0x000000000000000a
0x0000000074b3c549: wow64!Wow64LdrpInitialize+0x0000000000000429
0x00000000772184c8: ntdll!LdrpInitializeProcess+0x00000000000017e2
0x0000000077217623: ntdll! ?? ::FNODOBFM::`string'+0x000000000002bea0
0x000000007720308e: ntdll!LdrInitializeThunk+0x000000000000000e
0x00000000773d0fca: ntdll_773b0000!NtOpenKeyEx+0x0000000000000012
0x0000000075b42721: KERNEL32!LocalBaseRegOpenKey+0x000000000000010c
0x0000000075b428c9: KERNEL32!RegOpenKeyExInternalW+0x0000000000000130
--------------------------------------
Handle = 0x000000000000242c - CLOSE
Thread ID = 0x0000000000000cd4, Process ID = 0x0000000000001a5c

0x000000007721ffaa: ntdll!ZwClose+0x000000000000000a
0x0000000074b3f2cd: wow64!whNtClose+0x0000000000000011
0x0000000074b3cf87: wow64!Wow64SystemServiceEx+0x00000000000000d7
0x0000000074ac276d: wow64cpu!TurboDispatchJumpAddressEnd+0x0000000000000024
0x0000000074b3d07e: wow64!RunCpuSimulation+0x000000000000000a
0x0000000074b3c549: wow64!Wow64LdrpInitialize+0x0000000000000429
0x000000007724d177: ntdll! ?? ::FNODOBFM::`string'+0x000000000002bfe4
0x000000007720308e: ntdll!LdrInitializeThunk+0x000000000000000e
0x00000000773cf992: ntdll_773b0000!ZwClose+0x0000000000000012
0x0000000075b42642: KERNEL32!BaseRegCloseKeyInternal+0x0000000000000041
0x0000000075b425bc: KERNEL32!RegCloseKey+0x000000000000007d
0x0000000068f13ca3: mscorlib_ni+0x0000000000233ca3
0x0000000069bc21db: mscorwks_ntdef!CallDescrWorker+0x0000000000000033
0x0000000069be4a2a: mscorwks_ntdef!CallDescrWorkerWithHandler+0x000000000000008e
--------------------------------------
Handle = 0x000000000000242c - OPEN
Thread ID = 0x0000000000001cd0, Process ID = 0x0000000000001a5c

0x0000000077220e0a: ntdll!NtOpenKeyEx+0x000000000000000a
0x0000000074b5d1c9: wow64!Wow64NtOpenKey+0x0000000000000091
0x0000000074b5313b: wow64!whNtOpenKeyEx+0x0000000000000073
0x0000000074b3cf87: wow64!Wow64SystemServiceEx+0x00000000000000d7
0x0000000074ac276d: wow64cpu!TurboDispatchJumpAddressEnd+0x0000000000000024
0x0000000074b3d07e: wow64!RunCpuSimulation+0x000000000000000a
0x0000000074b3c549: wow64!Wow64LdrpInitialize+0x0000000000000429
0x00000000772184c8: ntdll!LdrpInitializeProcess+0x00000000000017e2
0x0000000077217623: ntdll! ?? ::FNODOBFM::`string'+0x000000000002bea0
0x000000007720308e: ntdll!LdrInitializeThunk+0x000000000000000e
0x00000000773d0fca: ntdll_773b0000!NtOpenKeyEx+0x0000000000000012
0x0000000075b42721: KERNEL32!LocalBaseRegOpenKey+0x000000000000010c
0x0000000075b428c9: KERNEL32!RegOpenKeyExInternalW+0x0000000000000130

--------------------------------------
Parsed 0x358E stack traces.
Dumped 0x7 stack traces.
0:044> !handle 242c ff
Handle 242c
  Type          File
  Attributes    0
  GrantedAccess 0x120089:
         ReadControl,Synch
         Read/List,ReadEA,ReadAttr
  HandleCount   2
  PointerCount  3
  No Object Specific Information available
3 голосов
/ 31 октября 2013

Перезапустить IIS - это может быть процесс, подключенный к отладчику

2 голосов
/ 01 октября 2010

Это было несколько раз зарегистрировано на Connect, сайте сообщества по сообщению об ошибках Microsoft. К вашему сведению, я считаю, что эта ошибка затрагивала Visual Studio с 2003 года и каждый раз исправлялась после RTM. :( Одна из ссылок выглядит следующим образом:

https://connect.microsoft.com/VisualStudio/feedback/details/568672/handles-to-project-dlls-are-not-released-when-compiling?wa=wsignin1.0

2 голосов
/ 24 мая 2010

Я бы посоветовал скачать Process Explorer, чтобы точно узнать, какой процесс блокирует файл. Его можно найти по адресу:

http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

1 голос
/ 26 апреля 2015

Это довольно часто вызывается Avast.

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

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

1 голос
/ 22 июля 2016

Для меня это было вызвано открытием командной строки в целевой папке (C:\users\username\source\repos\project\project\bin\debug\app.publish).

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

1 голос
/ 13 апреля 2016

Переименование файлов .exe и .pub работало для меня, но действительно утомительно. Я также сталкиваюсь с проблемой, что я не мог сделать редактирование во время сеанса отладки. Наконец, я перешел на страницу «Дополнительные параметры безопасности» в соответствии с:

https://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k%28%22VS.ERR.DEBUG_IN_ZONE_NO_HOSTPROC%3a11310%22%29;k%28TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22%29&rd=true

Я отменяю выбор, затем повторно устанавливаю флажок «Включить настройки безопасности ClickOnce». Уже несколько дней это без проблем ...

1 голос
/ 22 апреля 2015

Если ничего из вышеперечисленного не работает, и вы разрабатываете консольное приложение:

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

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