Frage Die Programmausgabe wird in die Datei umgeleitet, die Datei bleibt jedoch nach dem Beenden des Programms für einen Bruchteil der Zeit gesperrt


Das Problem

Wenn ich den folgenden Befehl in einer Eingabeaufforderung ausführen:

devenv /? > out.txt & del out.txt

Ich erhalte den folgenden Fehler:

The process cannot access the file because it is being used by another process.

Dies ist ein minimaler Reprofall für ein Problem in einem viel größeres Build-Skript.

Dieses Problem wurde von mehreren Benutzern des Buildskripts gemeldet. Einige Benutzer haben immer das Problem, manche haben es nie.

Was ist devenv?

devenv bezieht sich auf devenv.com, ein kleines Front-End-Dienstprogramm, das aufruft devenv.exe, Haupt-ausführbare Datei von Visual Studio IDE. Weitere Informationen finden Sie im MSDN-Artikel Devenv Befehlszeilenschalter.

Wann devenv.exe Wird ohne Argumente aufgerufen, es öffnet die Visual Studio IDE. Wann devenv.exe Wird mit den richtigen Argumenten aufgerufen, kann es Programme in der Befehlszeile erstellen. In beiden Fällen, devenv.exe kehrt sofort zurück.

Jedoch, devenv.com wird bis warten devenv.exe hat fast fertig, aber es scheint etwas früher zu enden und devenv.exe läuft noch und gibt Nachrichten aus, die den Fehler verursachen.

Frage

Wie kann ich diesen Fehler zuverlässig verhindern? Hinzufügen einer Pause (z.B. timeout 2) direkt nach der Invokation von devenv ist alles, woran ich gerade denken kann.

Vielleicht gibt es eine Möglichkeit, das zu verpacken devenv Befehl in etwas das gibt Kontrolle zurück nur wenn der Befehl vollständig beendet wurde?

Umgebung

  • Microsoft Windows-Version 10.0.17134.165
  • Microsoft Visual Studio 2017 Version 15.0.27703.2035

EDIT: Das Problem tritt auf, selbst wenn die Befehle aus einem Batch-Skript (nach https://superuser.com/a/908744/404097scheint dies ein relevantes Detail zu sein.)


0
2017-08-30 14:38


Ursprung




Antworten: