Programm kann nicht erstellt werden, da es von einem anderen Programm als Geisel gehalten wird

454
Sage Kelly

Ich weiß, dass dies schon früher gestellt wurde, aber keine der Fragen, die ich mir angeschaut habe, scheint meine Frage zu beantworten. Also, damit ich sicher bin, dass ich meine Hausaufgaben gemacht habe, bevor mich jemand angestrengt hat, lassen Sie mich Ihnen sagen, was ich getan habe, um den Fehler zu verursachen, und was ich versucht habe, das Problem zu beheben.

Das alles begann vor zwei Tagen. Ich habe ein Spritesheet-Animatorprogramm erstellt, damit ich Sprite-Sheets schnell bearbeiten kann. Ich bin immer noch dabei, dem Programm einige ästhetische Akzente zu setzen, aber da die Funktionalität mehr oder weniger funktioniert, bin ich nicht wirklich dazu gekommen. An diesem Tag dachte ich jedoch, ich könnte wenigstens ein Symbol hinzufügen. Also habe ich es erstellt, an das Programm angehängt und gesehen, wie es auf der Taskleiste in seiner ganzen Schönheit erscheint.

Jetzt neige ich dazu, das Programm viel zu benutzen, aber es ist noch nicht fertig, deshalb habe ich es noch nicht "freigegeben". Ich dachte, ich könnte es einfach an meine Taskleiste anheften und den Verweis auf die bin / Debug-Version des Programms haben. Ich stellte jedoch fest, dass das Symbol, das ich an diesem Tag angepasst hatte, nicht richtig angezeigt wurde (ein völlig anderes Problem, das sich nicht auf dieses bezieht). Also musste ich das Programm mehrmals an- und abstecken. Ich wusste, dass sich das Symbol auf manchen Systemen manchmal erst nach einem Neustart des Computers ändert oder in der Taskleiste angezeigt wird. Am Ende des Tages habe ich ihn heruntergefahren und am nächsten Tag neu gestartet. Es hat nicht funktioniert.

Zu diesem Zeitpunkt schien es mir nicht so wichtig zu sein, also entschied ich mich einfach, die Bearbeitung zu verschieben und meine Spritesheet-Arbeit fortzusetzen. Nach einer Weile wollte ich es in Aktion sehen, also habe ich meinen Animator über die Taskleiste angesteuert. Das war, als Avast! begann zu versuchen, das Ding zu analysieren, um zu sehen, ob es ein Virus war. Ich dachte "OK. Es ist kein Virus, aber Sie werden es bald herausfinden." Etwas vergangen (etwa eine Stunde) und das Ding wurde nie fertig. Nachdem ich mehrfach versucht hatte, den verfluchten übermäßig vorsichtigen Virenschutz dazu zu bringen, mein Programm in Ruhe zu lassen, entschloss ich mich, es zu lösen und es von der IDE aus auszuführen. An diesem Punkt hat es gut funktioniert. Ich habe es danach erneut gepinnt und es würde normalerweise von beiden Optionen ausgeführt: über IDE oder von der Taskleiste.

Nach einem weiteren Tag und einem Neustart entschied ich, dass ich genug von dem hässlichen Symbol hatte, und bearbeitete es noch einmal. Ich habe es in das Programm aufgenommen, aber als ich versuchte zu bauen, hing es länger als gewöhnlich dort und kam dann zurück und sagte etwas wie das:

Datei "obj \ x86 \ Debug \ SpriteSheetAnimator.exe" kann nicht nach "bin \ x86 \ Debug \ SpriteSheetAnimator.exe" kopiert werden. Der Prozess kann nicht auf die Datei 'bin \ x86 \ Debug \ SpriteSheetAnimator.exe' zugreifen, da er von einem anderen Prozess verwendet wird.

Im Anschluss an diese Nachricht gab es Warnmeldungen, in denen angegeben ist, wie oft versucht wurde, sie zu erstellen (10-mal).

Hier beginnt die Methode, das Problem zu beheben, wenn Sie bis hierher gelesen haben.

  • Ich fand das komisch, also entschied ich mich, es einfach zu reinigen und wieder aufzubauen. Ich habe dies von dem Reinigungsversuch erhalten:

Datei "C: ... \ bin \ x86 \ Debug \ SpriteSheetAnimator.exe" kann nicht gelöscht werden. Der Zugriff auf den Pfad 'C: ... \ bin \ x86 \ Debug \ SpriteSheetAnimator.exe' wird verweigert.

  • OK. Das ist scheiße. Nach dem Versuch, die Ordner \ bin und \ obj manuell zu löschen, stellte ich fest, dass es mich aus den gleichen Gründen immer noch nicht zuließ.

Das war vor einem Tag. Heute habe ich diese ausprobiert:

  • Ich fand, dass Prozesse einen Griff auf die Dateien haben könnte, so dass nach einigen Recherchen fand ich handle.exe von SysInternalSuite könnte das Problem beheben. Ich habe versucht, "handle -c 18 -y -p 5946" in eine Eingabeaufforderung einzugeben. Es hat nicht funktioniert, und alles, was ich zurückbekommen habe, war ein Fehler:

T

Das ist es. Kein Tippfehler oder ausgelassene Buchstaben. "T" - das ist alles, was ich als Fehler bekommen habe.

  • Ich fand auch, dass ich die Threads einfach mit Process Explorer aus derselben Suite löschen konnte. Irgendwie hatte ich drei davon, obwohl das Programm kein Multithreading ist. Egal, es spielte keine Rolle. Als ich versuchte, sie zu töten, sagte ich, dass ich keinen Zugang habe.

So, das war es. Ich kann mir nichts anderes vorstellen.

Ich verwende Windows 8.1 mit VS2013.

Handle ist Version 4.0

Wenn Sie die Griffkippe wollen, lassen Sie es mich wissen, und ich werde es hinzufügen. Es ist wirklich mollig und all das kann für lange Zeit gelöscht werden.

0
Ok, haben Sie sichergestellt, dass Sie immer noch Schreibrechte für diesen Ordner / diese Datei haben? Und dass die Datei nicht schreibgeschützt ist? Haben Sie einen Neustart versucht und versucht, es erneut zu löschen? Haben Sie versucht, Process Explorer zu verwenden, um herauszufinden, was den Griff dieser Datei hält? Ƭᴇcʜιᴇ007 vor 9 Jahren 0
1. Starten Sie neu. 2. Verwenden Sie Ihre IDEs-Clean-Option. 3. Konfigurieren Sie das Symbol als Ressource in Ihrem Projekt und wenden Sie es zur vollständigen oder Erstellungszeit an, wenn Sie auf die erstellte und bei jeder Änderung neu erstellte Kopie verweisen möchten. 4. Ihr AV-Problem ist nicht miteinander verbunden. Sie sollten also das Symbol ausklammern und sich dann auf das AV-Handle-Problem konzentrieren (oder umgekehrt, aber es ist wirklich verwirrend, wenn sie zusammengefügt werden; teilen und erobern). 5. Verwenden Sie try-finally-Strukturen für alle Dateien, die Ihre App öffnet, und stoppen Sie das Programm nicht einfach während des Debuggens, wenn eine Datei geöffnet ist. Führen Sie die App aus, bis die Datei geschlossen ist, und brechen Sie dann ab. Frank Thomas vor 9 Jahren 0
Ihre beiden Kommentare lassen mich glauben, dass mein ursprünglicher Kommentar nicht vollständig gelesen wurde. Die Ordner sind nicht schreibgeschützt. Ich habe die Ordnerberechtigungen nie geändert und sie sind Teil eines Lösungsaufbaus. Wenn Sie in diesem Beitrag lesen, haben Sie gesehen, dass ich Handle benutzt habe, um zu sehen, was den Griff der Datei enthielt. @FrankThomas: Ich habe innerhalb des Beitrags mehrmals einen Neustart durchgeführt, und es wurde festgestellt, dass die Clean-Lösung nicht funktioniert. Mein Icon-Problem ist ein separates Problem, daher sollte der Fokus nicht darauf aufgeteilt werden. Zum Schluss habe ich keine Ahnung, was Sie in Schritt 5 sagen. Sage Kelly vor 9 Jahren 0
@ Ƭᴇcʜιᴇ007 Trotzdem habe ich Process Explorer verwendet, und es zeigte sich, dass SpriteSheetAnimator.exe, das Programm selbst, drei Threads geöffnet hatte. Sage Kelly vor 9 Jahren 0
Nein, wo in Ihrem Beitrag erwähnen Sie, dass die Datei auf Lesezugriff geprüft wurde. Wenn Sie davon ausgehen, dass Sie (absichtlich) nichts an den Berechtigungen geändert haben, bedeutet das nicht, dass sie nicht geändert wurden. Ich habe um Bestätigung gebeten, dass sie noch richtig liegen, da Sie nicht erwähnt haben, dass Sie sie überprüft haben. Haben Sie bereits nach Festplattenbeschädigung gesucht? Wenn das Programm selbst lief (3 Threads scheinen Sie zu sagen), dann können Sie die Datei natürlich nicht löschen. Wenn Sie die Dinge, die sie halten, töten und löschen, können Sie sie dann erfolgreich wieder aufbauen? Ƭᴇcʜιᴇ007 vor 9 Jahren 0
@ Ƭᴇcʜιᴇ007: Es tut mir leid. Ich schnappte ein wenig. Das letzte Mal, als ich so lange etwas schrieb, bekam ich einen Kommentar mit der Aufschrift "tl; dr show me code", also ist meine Toleranz ein wenig flach ... und meine Wut ist falsch. Jedenfalls habe ich festgestellt, dass jedes Mal, wenn ich das Programm baue, die Ordner \ bin und \ obj so geändert werden, dass sie nur gelesen werden können, sowie die Unterordner. Wie gehe ich vor, um die Festplatte auf Korruption zu überprüfen? Ich kann keine Griffe töten. Ich bekomme immer "T", wenn ich es versuche. Sage Kelly vor 9 Jahren 0
@SageKelly - Ausführen von `chkdsk`, vorausgesetzt, Sie verfügen über ordnungsgemäße Sicherungen. Ich gehe davon aus, dass Sie Ihr Sicherheitsprogramm so konfiguriert haben, dass das Scannen und Betrachten an diesen bestimmten Orten Ihr Programm in rechts anzeigt. Ramhound vor 9 Jahren 1
Ordner werden immer schreibgeschützt (das ist eine allgemeine Windows-Sache). :) Ƭᴇcʜιᴇ007 vor 9 Jahren 0
@ Ramhound: Ja, das tue ich. Vor kurzem, was ich jedoch nicht in meinen Beitrag aufgenommen habe, habe ich mein gesamtes Projekt als Ausschluss für das Scannen hinzugefügt, so dass dies und andere Projekte, die ich alleine mache, dies tun würden. Ich habe keine Backups, daher bin ich mir nicht sicher, ob ich chkdsk sollte. Sage Kelly vor 9 Jahren 0
Erstellen Sie also Backups. Ramhound vor 9 Jahren 0
Nun, das Programm steht unter GitHub-Subversion. Zählt das? oder soll ich das ganze C-Laufwerk machen? Sage Kelly vor 9 Jahren 0

0 Antworten auf die Frage