Ok, das ist kein Duplikat von " Alternative zu Process.Start() ", denn meine Frage ist hier eine andere.
Ich muss einen Prozess ausführen und warten, bis die Ausführung des Prozesses und erhalten die Ausgabe der Konsole.
Es gibt eine Möglichkeit, RedirectStandardOutput und RedirectStandardError auf true zu setzen, jedoch funktioniert dies nicht gut auf einigen Maschinen, (wo .NET SDK nicht installiert ist), nur .NET Runtime installiert ist, jetzt funktioniert es auf einigen Maschinen und funktioniert nicht auf einigen Maschinen, so dass wir nicht wissen, wo das Problem ist.
Ich habe folgenden Code,
ProcessStartInfo info = new ProcessStartInfo("myapp.exe", cmd);
info.CreateNoWindow = true;
info.UseShellExecute = false;
info.RedirectStandardError = true;
info.RedirectStandardOutput = true;
Process p = Process.Start(info);
p.WaitForExit();
Trace.WriteLine(p.StandardOutput.ReadToEnd());
Trace.WriteLine(p.StandardError.ReadToEnd());
Auf manchen Rechnern bleibt das Programm bei p.WaitForExit() ewig hängen, auf manchen Rechnern funktioniert es korrekt, das Verhalten ist so zufällig, dass es keinen Anhaltspunkt gibt.
Wenn ich nun eine wirklich gute Lösung für dieses Problem mit pinvoke finden kann, werde ich sehr glücklich sein.
myapp.exe ist nichts anderes als 10 Hallo-Welt-Anweisungen auf den Bildschirm zu schreiben.