Wenn ich Git-Befehle in PowerShell ausführe, funktioniert alles bis auf einen kleinen Unterschied zwischen der PowerShell-Konsole und der NuGet-Konsole. Die Ausgabe von " git push
" wird im NuGet-Fenster in rotem Fehlertext angezeigt, im PowerShell-Fenster jedoch in Ordnung.
Hier ist ein Video, das den Unterschied zeigt. " git push
" zeigt seine Ergebnisse als Fehler in der Paketmanagerkonsole an. Die Operation hat funktioniert, es ist nur ärgerlich, dass die Ausgabe der Operation als Fehler angezeigt wird.
Ursache: git push
sendet die Ausgabe an stderr, nicht an stdout. Siehe hier , hier .
Powershell.exe als Host macht sich keine Sorgen, wenn native Tools eine Ausgabe an stderr senden, da dies eine etwas gewöhnliche Art ist, nicht nur Fehlermeldungen, sondern auch Statusmeldungen und anderes Zeug zu drucken. Versuchen Sie beispielsweise, etwas völlig Falsches wie
auszuführen %Vor%Findstr sendet Fehlermeldungen an stderr, so dass Powershell.exe diese "error" -Ausgabe nicht Ihrer Variablen zuweisen kann, aber auch nicht ausflippt.
Der NuGet-Paketmanager-Host dagegen ist in dieser Hinsicht nicht so intelligent. Wenn ein natives Werkzeug ausgeführt wird, interpretiert dieser Host alles in stderr als einen echten Fehler. So erhalten Sie den roten Text, Diagnosemeldungen, usw. Versuchen Sie das gleiche findstr
Beispiel oben in der PM, Sie werden vollständige Fehler sehen.
Einige Problemumgehungen / Vorschläge:
--porcelain
, wodurch die Ausgabe an stdout, nicht stderr gesendet wird. $errorView = 'CategoryView'
, was zumindest die Fehlermeldungen minimiert, aber nicht entfernt git push 2>&1 | write-host
Tags und Links git visual-studio visual-studio-2012 powershell nuget