2013-10-29 4 views
11

Ich habe einen Ausgabeordner für mein DLL-Projekt über die Projekteigenschaften, die ich "Ausgabe" nennen.vshost.exe behält Zugriff auf meine .dll und ich kann es nicht aktualisieren, wenn ich es erstelle

Das Problem ist, aus einem leeren Ordner Ausgabe, das erste Mal, wenn ich das Projekt erstellen, ist es in Ordnung. Beim zweiten Mal erhalte ich den folgenden Fehler:

Der "andere Prozess" ist die vshost.exe von Visual Studio. Da es MyLibrary.dll einbezieht, kann es nicht gelöscht oder ersetzt werden, also warum der Fehler. Dies hält die MyLibrary.dll im Ordner Ausgabe nicht aktualisiert. Ich habe jedoch andere DLL-Projekte in meiner Lösung, in denen dies nicht passiert.

Die Lösung, die ich bis jetzt verwendet habe, um es zu aktualisieren, ist das Schließen der VS (also vshost.exe schließen), dann eine .bat-Datei ausführen, die die Datei Output \ Release \ MyLibrary.dll löscht, dann öffnen Sie die VS erneut und baue dein Projekt neu auf.

Ich weiß wenig von dem, was genau vshost.exe tut, also habe ich keine Ahnung von wo zu beginnen, dieses Problem von der Wurzel zu löschen. Ich weiß nicht, warum das mit einer bestimmten .dll passiert. Ich schätze jede Idee, die mir hilft herauszufinden, warum das passiert.

+0

Es ist seit Visual Studio 2005 passiert. Hin und wieder, ohne besonderen Grund. Der einzige Weg, den ich gefunden habe, ist dasselbe zu tun. – SimonGoldstone

+0

Es könnte etwas weitergehen, nachdem der Debugger getrennt wurde. d. h. laufender Code in einem Thread oder etwas. –

+0

Ich habe dieses Problem, wenn ich eine Bibliothek in einer Visual Studio-Sitzung kompiliert hatte, und die Anwendung in einer anderen Visual Studio-Sitzung Debugging. Nachdem der Fehler im Bibliothekscode gefunden und neu kompiliert wurde, konnte die Anwendungskopie der Bibliothek nach dem Neuaufbau nicht aktualisiert werden. –

Antwort

14

vshost.exe ist der Visual Studio Hosting-Prozess. Es ist ein benutzerdefinierter CLR-Host, der Ihre EXE lädt und das Debugging vereinfacht. Sie können es ausschalten, das hat sehr wenige Nebenwirkungen. Deaktivieren Sie auf der Registerkarte "Projekt + Eigenschaften" auf der Registerkarte "Debugging" die Option "Visual Studio-Hostingprozess aktivieren".

Sie werden jetzt wahrscheinlich das eigentliche Problem in Ihrem Programm finden. Mit dem häufigsten Problem, dass Ihr Programm nicht beendet wird, wenn Sie es fragen. Sie werden immer noch bekommen einen Build-Fehler, werden Sie jetzt Ihre eigenen EXE gefingert als derjenige, der eine Sperre für die DLL hält. Sie sehen es auch auf der Registerkarte Prozess des Task-Managers. Damit kannst du es auch töten.

Es ist mir nicht so klar, wie Programmierer dieses Problem neu erstellen. Wenn Sie dazu Strg + F5 anstelle von F5 drücken, drücken Sie immer F5, um den Debugger beim Starten des Programms sofort anzuhängen. Mit Debugger + Stop Debuggen wird nun das Programm zuverlässig gestoppt. Sie können auch Tools + Attach to Process verwenden, um später einen Debugger anzuhängen, um herauszufinden, was Ihr Programm macht.

Anti-Malware ist eine häufige Geissel erwähnenswert, sie erhalten Weg zu aufgeregt, wenn sie eine ausführbare Datei aus dem Nichts erscheinen sehen. Wenn Sie Avast verwenden, dann deinstallieren Sie es vollständig, es ist ziemlich inkompatibel mit VS.

+3

Es löste das Problem, indem die Markierung des "Visual Studio-Hosting-Prozesses aktivieren" im Projekt der ausführbaren Datei, die die DLL verwendete, aufgehoben wurde. Danke für die ausgefüllte Antwort. –

Verwandte Themen