Невозможно построить программу, потому что она находится в заложниках у другой программы

332
Sage Kelly

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

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

Сейчас я часто использую программу, но она еще не закончена, поэтому я еще не «выпустил» ее. Я подумал, что могу просто прикрепить его к панели задач и просто указать ссылку на версию программы bin / Debug. Однако я обнаружил, что когда я делал это, иконка, которую я настраивал в тот день, не отображалась должным образом (совершенно другая проблема, не связанная с этой). Поэтому мне пришлось закреплять и откреплять программу несколько раз. Я знал, что иногда в некоторых системах значок не будет меняться или отображаться на панели задач должным образом до перезагрузки компьютера. В конце дня я выключил его и перезапустил на следующий день. Это не сработало.

В тот момент это не казалось мне таким уж важным, поэтому я просто решил отложить редактирование и продолжить работу над таблицами спрайтов. Через некоторое время я захотел увидеть это в действии, поэтому я запустил свой аниматор через панель задач. Это было когда Аваст! начал пытаться проанализировать вещь, чтобы увидеть, если это был вирус. Я подумал: «Хорошо. Это не вирус, но вы скоро это узнаете». Немного прошло (около часа), и дело так и не закончилось. После нескольких попыток заставить проклятую чрезмерно осторожную защиту от вирусов оставить мою программу в покое, я решил открепить ее и запустить из IDE. В этот момент все работало нормально. После этого я снова закрепил его, и он будет работать нормально из любой опции: через IDE или с панели задач.

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

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

После этого сообщения были предупреждающие сообщения, детализирующие, сколько раз он пытался его построить (10 раз).

Здесь начинаются методы попытки решить проблему, если вы читали это далеко.

  • Я подумал, что это странно, поэтому я решил просто почистить его и восстановить. Я получил это от попытки очистки:

Невозможно удалить файл "C: ... \ bin \ x86 \ Debug \ SpriteSheetAnimator.exe". Доступ к пути «C: ... \ bin \ x86 \ Debug \ SpriteSheetAnimator.exe» запрещен.

  • Хорошо. Это отстой. Поэтому после попытки вручную удалить папки \ bin и \ obj я обнаружил, что он по-прежнему не позволяет мне по тем же причинам.

Это было день назад. Сегодня я попробовал это:

  • Я обнаружил, что процессы могут иметь дескриптор файлов, поэтому после некоторых исследований я обнаружил, что handle.exe из SysInternalSuite может решить эту проблему. Я попытался ввести «handle -c 18 -y -p 5946» в командной строке. Это не сработало, и все, что я получил от дескриптора, это ошибка:

T

Вот и все. Нет опечатка или пропущенные буквы. «Т» - это все, что я получил как ошибку.

  • Я также обнаружил, что могу просто удалить потоки, используя Process Explorer из того же набора. Каким-то образом у меня их было три, хотя программа не многопоточная. Во всяком случае, это не имело значения; когда я пытался их убить, мне сказали, что у меня нет доступа.

Итак, это все. Я не могу думать ни о чем другом, чтобы сделать.

Я использую Windows 8.1 с VS2013.

Дескриптор версии 4.0

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

0
Итак, вы убедились, что у вас все еще есть разрешение на запись в эту папку / файл? А что за файл не помечен только для чтения? Вы пытались перезагрузиться и пытались удалить снова? Вы пытались использовать Process Explorer, чтобы выяснить, что содержит дескриптор этого файла? Ƭᴇcʜιᴇ007 9 лет назад 0
1. Перезагрузка. 2. используйте опцию Clean IDEs. 3. Сконфигурируйте значок как ресурс внутри своего проекта и примените его во время компиляции / сборки, если вы будете ссылаться на копию, которая создается и перестраивается каждый раз, когда вы вносите изменения. 4. Ваша проблема с аудио-видео не связана, поэтому вырежьте значок, а затем сконцентрируйтесь на проблеме с аудио-видео (или наоборот, но это действительно сбивает с толку, когда они смешаны; разделяй и властвуй). 5. используйте структуры try-finally для всех файлов, которые открывает ваше приложение, и не останавливайте программу во время отладки, если у нее открыт файл. Запустите приложение, пока файл не будет закрыт, затем прервите работу. Frank Thomas 9 лет назад 0
Оба ваших комментария заставляют меня поверить, что мой первоначальный комментарий не был прочитан полностью. Папки не только для чтения: я никогда не менял права доступа к папкам, и они являются частью сборки решения, и если вы читали в посте, вы видели, что я использовал handle, чтобы увидеть, что удерживает дескриптор файла. @FrankThomas: я перезагружал несколько раз в пределах поста, и было установлено, что Чистое решение не работает. Моя проблема с пиктограммами - это отдельная проблема, поэтому не следует делиться на нее. Наконец, я понятия не имею, что вы говорите на шаге 5. Sage Kelly 9 лет назад 0
@ Ƭᴇcʜιᴇ007 Несмотря на это, я использовал Process Explorer, и он показал, что в самой программе SpriteSheetAnimator.exe было открыто три потока. Sage Kelly 9 лет назад 0
Где бы вы ни упоминали в своем посте, вы упоминаете, что файл был проверен только для чтения, и если вы предполагаете, что только то, что вы не (намеренно) ничего не изменили в разрешениях, не означает, что они не изменились. Я просил подтвердить, что они все еще установлены правильно, так как вы не упомянули, что проверили их. Вы уже проверили на повреждение диска? Если сама программа работала (кажется, что стоит 3 темы), то да, конечно, вы не можете удалить файл. Если вы убьете вещи, которые его держат, и удалите, сможете ли вы затем успешно восстановить его? Ƭᴇcʜιᴇ007 9 лет назад 0
@ Ƭᴇcʜιᴇ007: извини. Я немного огрызнулся. В прошлый раз, когда я что-то писал так долго, я получил комментарий, в котором говорилось: «Д-р, покажи мне код», поэтому моя терпимость немного поверхностна… и мой гнев введен в заблуждение. Во всяком случае, я обнаружил, что каждый раз, когда я собираю программу, она будет изменять папки \ bin и \ obj только для чтения, а также подпапки. Как мне проверить наличие повреждений диска? Я не могу убить ни одной ручки. Я продолжаю получать "T", когда я пытаюсь. Sage Kelly 9 лет назад 0
@SageKelly - запуск `chkdsk` при условии правильного резервного копирования. Я предполагаю, что вы настроили свою программу безопасности, кроме как для сканирования и просмотра в этих конкретных местах, в которых ваша программа отображается правильно? Ramhound 9 лет назад 1
Папки всегда будут отображаться только для чтения (это обычная вещь для Windows). :) Ƭᴇcʜιᴇ007 9 лет назад 0
@Ramhound: Да, я делаю. Однако совсем недавно, который я не включил в свой пост, я добавил весь свой проект в качестве исключения для сканирования, чтобы он мог выполнять этот и другие проекты, которые я делаю, в одиночку. У меня нет резервных копий, поэтому я не уверен, должен ли я chkdsk. Sage Kelly 9 лет назад 0
Так что создавайте резервные копии. Ramhound 9 лет назад 0
Ну, программа находится в GitHub Subversion. Это считается? или ты хочешь чтобы я сделал весь диск С? Sage Kelly 9 лет назад 0

0 ответов на вопрос

Похожие вопросы