Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Visual Studio - Debugging startet nur sporadisch / EXE kann nicht kopiert werden
blume666
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

Visual Studio - Debugging startet nur sporadisch / EXE kann nicht kopiert werden

beantworten | zitieren | melden

Hallo liebe Community,

ich habe ein Problem mit Visual Studio 2010: Es geht um das Erstellen und Starten der Debug-/Release- Version eines Programms. Manchmal kann die Executable erstellt werden und manchmal nicht. Dann erscheint die Meldung
Zitat
Fehler 1 Die Datei "obj\x86\Debug\ConsoleApplication1.exe" kann nicht in "bin\Debug\ConsoleApplication1.exe" kopiert werden. Der Prozess kann nicht auf die Datei "bin\Debug\ConsoleApplication1.exe" zugreifen, da sie von einem anderen Prozess verwendet wird. ConsoleApplication1

Nach dem ich dann per Hand die Datei aus dem Debug-Ordner gelöscht habe, wird sie auch erfolgreich erstellt. Möchte ich nun das Debuggen starten, passier nichts. Die Application startet nicht und es erscheint keine Fehlermeldung.

Das komische ist nur, dass nach einiger Zeit die Anwendung wieder gestartet werden kann. Wie gesagt, diese Probleme treten sporadisch auf. Wisst ihr Rat?

Visual Studio 2010 läuft bei mir unter Windows 7 64Bit

mfg
panhans
private Nachricht | Beiträge des Benutzers
Femaref
myCSharp.de - Member



Dabei seit:
Beiträge: 253

beantworten | zitieren | melden

Benutzt du zufällig T4 Templates und generierst code aus der assembly? wenn ja, guck dir mal die T4 Toolbox extension sowie die dort enthaltene T4Toolbox.VolatileAssemblyProcessor für das VolatileAssembly tag an.
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2340

beantworten | zitieren | melden

Prüf auch mal, ob alle Threads beendet werden. - Wobei das vermutlich nicht der Grund ist, aber ein Gedanke.

Wenn es ein Thread ist, ist das merkwürdige, dass du die Assembly löschen kannst.
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
blume666
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

beantworten | zitieren | melden

Also es ist ja bei jedem Projekt. Es kann auch nur eine einfache Konsolenanwendung sein. Ich benutze auch nur die Templates von VS. Ansonsten keine Drittanbieter-Templates.

Wenn ich einen Ordner mit einer EXE Datei löschen will (über den Explorer), dann bekomme ich ebenfalls ab und wann eine Meldung, dass die Datei von einem Prozess verwendet wird. Im Taskmanager ist sie nicht zu sehen und per Hand kann ich sie dann auch einfach löschen. Ich denke mal, dass das Problem damit auch etwas zu tun hat.
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2340

beantworten | zitieren | melden

Ok es ist ein Threading Problem. - Deine Threads werden nicht Ordnungsgemäß beendet.
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
blume666
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

beantworten | zitieren | melden

Ok, es ist ja, wie bereits erwähnt kein reinen VS-Problem. Aber wie kann ich denn erzwingen, dass sich die Threads beenden?


//EDIT: Das Problem tritt auch auf wenn ich einen Ordner lösche, welcher eine EXE beinhaltet. Ich kann den Ordner erst löschen wenn ich vorher die EXE gelöscht habe. Ich finde dazu einfach keine Erklärung.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von blume666 am .
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2340

beantworten | zitieren | melden

Eine unsaubere variante wäre bei Beenden der Applikation diese Hart zu beenden.

Sauberer wäre es denn Threads eine Abbruch Variable (vorzugsweise Boolean) mitzugeben und bei beenden des Programmes true zu setzen, damit der Thread richtig beendet wird.


volatile bool _bStop = false;
Object _oLock = new Object();

private void MyThreadMethod()
{
    do
    {
        // your code here


        lock(_oLock)
        {
            Monitor.Wait(_oLock, 1000);
        }
    }while(!_bStop);
}

protected override void OnClosing(CancelEventArgs e)
{
    _bStop = true;
    lock(_oLock)
    {
        Monitor.Pulse(_oLock);
    }
}

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von inflames2k am .
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
blume666
myCSharp.de - Member



Dabei seit:
Beiträge: 27

Themenstarter:

beantworten | zitieren | melden

Ja ok, danke. Das weiß ich. Ich denke eher mein Problem ist ein Windows-Spezifisches Problem und hat weniger mit meinen Programmen zu tun.

Wie gesagt ich bekomm ja auch eine Fehlermeldung beim löschen eines Ordners, welcher eine exe beinhaltet. D.h. Rechtsklick auf ordner -> Löschen Erst wenn ich da die EXE gelöscht habe kann ich den Ordner selbst entfernen.
private Nachricht | Beiträge des Benutzers
ProGamer
myCSharp.de - Member



Dabei seit:
Beiträge: 691
Herkunft: NRW

beantworten | zitieren | melden

[Offtopic]
Ist das bei ALLEN ordnern so?
Wenn ja dann ist das ein Windows-Problem, wenn nein dann ist der Prozess noch aktiv.
[/Offtopic]

Versuch mal das Programm "Unlocker". das verrät dir ziemlich genau warum ein programm sich nicht löschen lässt.
MfG
ProGamer
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2340

beantworten | zitieren | melden

Ah! - Ich glaub ich weis jetzt wo das Problem liegt, je nachdem was in den Threads abläuft kann es sein, dass nach Beenden der Anwendung noch nicht alle Threads beendet sind.

Nachdem anschließend alle Threads beendet wurden, ist sie wieder normal zugänglich.

Prüf doch mal nicht nur den Reiter "Anwendungen" sondern auch den Reiter "Prozesse" ob der Prozess darin noch liegt. Denn die Anwendung verschwindet aus "Anwendungen" sobald das Hauptformular beendet wurde.
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
Inso
myCSharp.de - Member



Dabei seit:
Beiträge: 19

beantworten | zitieren | melden

Ich hatte ähnliche Probleme, als mein Projekt auf einem Netzlaufwerk lag.
private Nachricht | Beiträge des Benutzers
Xynratron
myCSharp.de - Member



Dabei seit:
Beiträge: 1184

beantworten | zitieren | melden

huhu,

Ich hab dieselbe Entwicklungsumgebung und nicht diese Probleme.

Schau mal im Ressourcenmonitor, ob der Prozess beendet ist (auch wenn ein Prozess im Taskamanager nicht mehr vorhanden ist, so kann er immernoch da sein!) - Im Ressourcenmonitor wird so ein Gesist-Prozess dann grau dargestellt. Hatte sowas mal mit ProjectX und ner defekten Platte. Der versuchte Schreibzugriff lies den Prozess festhängen, auch nachdem er im Taskmanager abgeschossen war.

Da es bei Dir noch andere "exe-Dateien" betrifft, tippe ich allerdings auf den Virenscanner.

:-)

Xynratron
Herr, schmeiss Hirn vom Himmel - Autsch!
Zitat von herbivore
Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.
private Nachricht | Beiträge des Benutzers
dN!3L
myCSharp.de - Experte

Avatar #avatar-2985.png


Dabei seit:
Beiträge: 3138

beantworten | zitieren | melden

Hast du ein Setup-Projekt in der Projektmappe?
private Nachricht | Beiträge des Benutzers
userid4106
myCSharp.de - Member



Dabei seit:
Beiträge: 480

beantworten | zitieren | melden

Hallo,

ich bin durch Zufall auf diesen Beitrag gestoßen. Wir haben das selbe Problem und es spielt sich auch alles in einer Windows 7 64Bit Umgebung ab.

Aber zuerst möchte ich sagen, dass es nichts mit den VS direkt zu tun hat und auch nicht mit irgendwelchen Thrads die nicht sauber von der zu kompilierenden Anwendung geschlossen werden oder Ähnliches.

Wir haben jede Menge Aufwand betrieben und sind kurz davor einen Case bei Microosoft aufzumachen.

Problem ist folgendes...

Wenn du deine EXE kompilierst, dann wird es beim ersten Mal funktionieren. Danach aber nicht mehr. Es sei denn du wartest 2-5 Minuten.
Wenn du nun ein zweites mal kompilierst, dann wird die EXE, die zuvor erstellt wurde, gelöscht. Und das passiert unter Windows 7 eben nicht sofort sondern der Befehl zum Löschen landet im Kernel erstmal in einer Queue die abgearbeitet wird. Das kann aber einige Minuten dauern. Wieso das so lange dauert wissen wir aber auch noch nicht.
Fakt ist, dass dieses Problem auch auftachen kann, wenn man einfach mal eine kleine *.txt Datei erstellt, diese speichert und schließt und dann löscht. Im ersten Moment könnte man denken, dass diese Datei wirklich gelöscht wurde aber wenn man im Windows Explorer dann mal die Taste F5 drückt(zum aktualisieren), dann ist die Datei auf einmal wieder da. Sitzt man nun ein paar Minuten vor dem Explorer und drückt munter seine Taste F5 dann kann man beobachten, dass die Datei irgendwann verschwindet.

Ich zerbreche mir auch noch den Kopf darüber wie man das umgehen kann....
Wollte eigentlich schon seit Wochen mal diese Situation an Mark Russinovich schicken. Der kann sowas auf seinem Blog immer ganz schön aufbröseln. UND, er sitzt direkt an der Quelle;-)
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 6155
Herkunft: Stuttgart

beantworten | zitieren | melden

Noch der obligatorische Tipp: Testweise mal den Virenscanner deaktivieren.
private Nachricht | Beiträge des Benutzers
userid4106
myCSharp.de - Member



Dabei seit:
Beiträge: 480

beantworten | zitieren | melden

Es ist kein Virenscanner installiert.....

PS: Die Maschine wurde zum Testen aufgesetzt und hängt nicht im Internet:-P
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von userid4106 am .
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7538
Herkunft: Waidring

beantworten | zitieren | melden

Hallo,

gibt der ProcessExplorer auch keinen Aufschluss warum die Datei nicht frei ist?

Wenn du VisualNUnit hast dann hängt das manchmal auch -> da kill ich dann einfach den VisualNUnit.exe-Prozess oder VisualNUnitRunner.exe-Prozess.


mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers
userid4106
myCSharp.de - Member



Dabei seit:
Beiträge: 480

beantworten | zitieren | melden

Klar gibt der Process Explorer Auskunft darüber, wieso die Datei gesperrt ist. In allen Fällen ist die Datei vom Prozess SYSTEM im Zugriff. Das zeigen auch alle weiteren Tools an, die aber NICHT den Prozess beenden können. Und bekanntlich sitzt hinter dem SYSTEM ja der Kernel Space.

Wer weiß wie man im Process Monitor vernünftig filtern kann, der wird auch sehr schön sehen können, wie die "Steuerbefehle" zum Löschen eintrudeln und die Datei anschließend verschwindet...

Ich bin allerdings für alle Anregungen offen;-)
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von userid4106 am .
private Nachricht | Beiträge des Benutzers
ujr
myCSharp.de - Experte



Dabei seit:
Beiträge: 1770

beantworten | zitieren | melden

Zitat von Second Sun
Und bekanntlich sitzt hinter dem SYSTEM ja der Kernel Space.

Mithin auch alle Treiber. Gibt's vielleicht einen Filtertreiber für das Dateisystem? Sonstige Besonderheiten? Was passiert z. B. auf einem FAT32-Volume? Wenn das Projekt oder die Textdatei also etwa auf einem USB-Stick mit FAT32 erstellt wird?
private Nachricht | Beiträge des Benutzers
userid4106
myCSharp.de - Member



Dabei seit:
Beiträge: 480

beantworten | zitieren | melden

Moin,

also von einem NTFS Stick aus ist das alles kein Problem. Da kann ich kompilieren so oft ich will. Allerdings ist so ein USB Stick eben nicht so schnell wie eine Platte. Und das ist auch ein bisschen das Problem. Nun ja.. unterm Strich ist es aber schon schneller als das ewige Warten:-P

Hmm... Filtertreiber... Also ich habe das Problem auf 4 unterschiedlichen Notebooks festgestellt. Darunter ein Dell mit RAID, Fujitsu und HP.. Bei allen das selbe Problem.

An was für einen Filtertreiber dachtest du genau? Also welches Produkt könnte sowas mitbringen?
private Nachricht | Beiträge des Benutzers
ujr
myCSharp.de - Experte



Dabei seit:
Beiträge: 1770

beantworten | zitieren | melden

Zitat von Second Sun
An was für einen Filtertreiber dachtest du genau? Also welches Produkt könnte sowas mitbringen?

An sich nichts konkretes. Vielleicht irgendwelche Optimierungsprogramme. Da Virenscanner schon ausgeschlossen ist, evtl. ein Defragmentierungsdienst? Hast Du an einem minimalen System getestet?

Seltsam ist ja schon, dass es auf USB-Sticks funktioniert. Da fiele mir die Option "auf schnelles Entfernen optimieren" ein in den Treiber- bzw. Geräteeigenschaften. Wie sieht es aus, wenn Du diese veränderst? Oder eine externe Festplatte anstelle eines Sticks verwendest?

Ist schon etwas merkwürdig, auch dass es mit Textdateien genau so auftritt. Auf der anderen Seite kann es kein sooo allgemeines Problem, sonst würden deutlich mehr Leute drüber klagen. Welche Gemeinsamkeiten haben also die Laptops? Software? Konfigurationen?
private Nachricht | Beiträge des Benutzers
royw
myCSharp.de - Member



Dabei seit:
Beiträge: 3

beantworten | zitieren | melden

Hi,
mir ist bewusst ,dass der letzte Beitrag bereits sehr alt ist ...

Doch ich habe das gleiche Problem auf meinem PC .
Es ist ein Windows 7 64Bit System mit einer SSD als Systemdisc.

Hat irgend jemand eine Lösung finden können ?

Bei mir tritt dieses Problem bei den verschiedensten Programm auf.
Aber es liegt immer daran, dass die Datei nicht neu geschrieben werden kann bzw. nicht darauf zugegriffen werden kann.

Vielen Dank für eure Hilfe
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15705
Herkunft: BW

beantworten | zitieren | melden

Meist liegt das daran, dass irgendeine Ressource nicht korrekt freigebenen wurde, zB ein unmanaged Speicherbereich oder ein Filehandle etc.. oder ein Thread in einer Endlosschleife steckt.
private Nachricht | Beiträge des Benutzers
royw
myCSharp.de - Member



Dabei seit:
Beiträge: 3

beantworten | zitieren | melden

Danke für die schnelle Antwort.
Aber ich habe dieses Verhalten bei den verschiedensten Entwicklungsumgebungen. Also nicht nur bei Visual Studio ,sondern auch bei z.B. IAR EWB und Delphi ...

Meistens funktioniert alles super, doch dann kommt der Zeitpunkt wo ich die Meldung bekomme, das nicht auf die Datei zugegriffen werden kann. (verschieden Dateien und Orte).

Es sieht so aus, als ob Windows die Finger an diesen Files hat und dadurch eine andere Software nicht ran kommt.

Es schein etwas damit zu tun zu haben, dass das entsprechende File zuerst gelöscht und dann gleich wieder neu erstellt wird.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15705
Herkunft: BW

beantworten | zitieren | melden

Ich entwickle derzeit (letzten Monate) eine Library für das Managen von Files und mir ist das Verhalten auch unter gekommen.
Es liegt meist an dem ShareMode, wenn man eine Datei öffnet. Die meisten Anwendungen öffnen - obwohl sie nur lesen - eine Datei mit ShareMode = None; kein anderer darf _irgendetwas_ mit der Datei machen, selbst wenn das parallele Lesen kein Thema wäre.

Problem ist: wenn das Handle nicht korrekt verworfen wird bleibt für alle anderen Prozesse die Datei gesperrt.
Ich hatte vor einiger Zeit ein Problem mit mehreren Threads, wo ich diesen Fehler auch begangen hatte: bei jedem Debug war danach die Datei gesperrt. Ich hab ~50 Neustarts gebraucht, bis ich den Fehler gefunden habe.

In welcher Programmiersprache das passiert ist egal, denn alle Sprachen nutzen die Win32 Schnittstellen (müssen), und diese hat eben den Parameter des ShareModes.
In .NET sieht man den ShareMode nicht, da .NET einem das gar nicht anbietet bei einem normalen File.Open(). Nur die FileStream-Klasse ermöglicht das Setzen.

Ich sag nicht, dass genau das das Problem ist: es ähnelt sich nur sehr sehr stark mit meinen Erfahrungen die letzten Monate.
private Nachricht | Beiträge des Benutzers
Robin0
myCSharp.de - Member



Dabei seit:
Beiträge: 213

beantworten | zitieren | melden

Das problem stand mal ne zeitlang auf der supportseite von Visual Studio 2013 isn problem an dem du nix machenkannst einfach das Visual Studio neustarten. //Seit dem letzten update is der fehler bei mir zumindest nichtwider aufgetreten
private Nachricht | Beiträge des Benutzers
witte
myCSharp.de - Member



Dabei seit:
Beiträge: 966

beantworten | zitieren | melden

Virenscanner?
private Nachricht | Beiträge des Benutzers
royw
myCSharp.de - Member



Dabei seit:
Beiträge: 3

beantworten | zitieren | melden

Virenscanner hatte ic hauch schon mal aus -> trat trotzdem auf ..

Es liegt nicht (nur) am Visual Studio, da es mir auch bei anderen Programmen passiert .

Ich denke, es ist irgendein Tool/Cache o.ä. was die Disk Zugriffe puffert oder optimieren will ...
private Nachricht | Beiträge des Benutzers
witte
myCSharp.de - Member



Dabei seit:
Beiträge: 966

beantworten | zitieren | melden

Dann können wir hier alle nur rumraten. Vllt mal mit Werkzeugen analysieren? Process Monitor von Sysinternals?
private Nachricht | Beiträge des Benutzers
ProGamer
myCSharp.de - Member



Dabei seit:
Beiträge: 691
Herkunft: NRW

beantworten | zitieren | melden

Hallo zusammen,

guckt doch einfach welcher Prozess blockiert: Unlocker
MfG
ProGamer
private Nachricht | Beiträge des Benutzers