Update: Ein Beispielprojekt, das diesen Fehler reproduziert, finden Sie hier bei Microsoft Connect . Ich habe auch getestet und verifiziert, dass die in der unten akzeptierten Antwort angegebene Lösung für dieses Beispielprojekt funktioniert. Wenn diese Lösung für Sie nicht funktioniert, haben Sie wahrscheinlich ein anderes Problem (das in einer separaten Frage enthalten ist).
Dies ist eine Frage, die zuvor gestellt wurde, sowohl hier bei Stack Overflow als auch an anderen Stellen, aber keiner der Vorschläge, die ich bisher gefunden habe, hat mir geholfen, daher muss ich nur versuchen, eine neue Frage zu stellen.
Szenario: Ich habe eine einfache Windows Forms-Anwendung (C #, .NET 4.0, Visual Studio 2010). Es verfügt über einige Basisformulare, von denen die meisten anderen Formulare erben. Für den Datenbankzugriff werden Entity Framework (und POCO-Klassen) verwendet. Nichts Besonderes, kein Multithreading oder so.
Problem: Für eine Weile war alles in Ordnung. Dann konnte Visual Studio aus heiterem Himmel nicht erstellt werden, als ich die Anwendung starten wollte. Ich habe die Warnung "Datei '... bin \ Debug \ [ProjectName] .exe' kann nicht gelöscht werden. Der Zugriff auf den Pfad '... bin \ Debug \ [ProjectName] .exe' wird verweigert." und der Fehler "Datei 'obj \ x86 \ Debug \ [Projektname] .exe' kann nicht nach 'bin \ Debug \ [Projektname] .exe' kopiert werden. Der Prozess kann nicht auf die Datei 'bin \ Debug \ [Projektname] .exe zugreifen "Weil es von einem anderen Prozess verwendet wird." (Ich erhalte sowohl die Warnung als auch den Fehler beim Ausführen von Rebuild, aber nur den Fehler beim Ausführen von Build - halten Sie das nicht für relevant?)
Ich verstehe sehr gut, was in der Warn- und Fehlermeldung steht: Visual Studio versucht offensichtlich, die exe-Datei zu überschreiben, während sie gleichzeitig aus irgendeinem Grund gesperrt ist. Dies hilft mir jedoch nicht, eine Lösung für das Problem zu finden. Ich habe nur festgestellt, dass es funktioniert, Visual Studio herunterzufahren und erneut zu starten. Das Erstellen und Starten funktioniert dann, bis ich einige Formulare ändere, dann habe ich wieder das gleiche Problem und muss neu starten ... Ziemlich frustrierend!
Wie ich oben erwähnt habe, scheint dies ein bekanntes Problem zu sein, daher gibt es viele Lösungsvorschläge. Ich werde nur auflisten, was ich hier bereits versucht habe, damit die Leute wissen, was sie überspringen sollen:
- Erstellen Sie eine neue saubere Lösung und kopieren Sie einfach die Dateien aus der alten Lösung.
Fügen Sie dem Pre-Build-Ereignis des Projekts Folgendes zu Folgendem hinzu:
if exist "$(TargetPath).locked" del "$(TargetPath).locked" if not exist "$(TargetPath).locked" if exist "$(TargetPath)" move "$(TargetPath)" "$(TargetPath).locked"
Hinzufügen der folgenden Elemente zu den Projekteigenschaften (.csproj-Datei):
<GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>
Keiner von ihnen hat jedoch für mich gearbeitet, sodass Sie wahrscheinlich sehen können, warum ich anfange, ein bisschen frustriert zu werden. Ich weiß nicht, wo ich sonst suchen soll, also hoffe ich, dass mir jemand etwas zu geben hat! Ist das ein Fehler in VS und wenn ja, gibt es einen Patch? Oder habe ich etwas falsch gemacht, habe ich einen Zirkelverweis oder ähnliches und wenn ja, wie könnte ich das herausfinden?
Anregungen sind sehr dankbar :)
Update: Wie bereits erwähnt in Kommentar unten, ich habe auch geprüft , Process Explorer verwenden , dass es tatsächlich ist Visual Studio, das die Datei blockiert.