visual usar tiene subir studio repositorio remotos que proyecto para los instalar insertar configurar configurados con como code visual-studio git powershell visual-studio-2012 nuget

visual studio - usar - PowerShell muestra algunos resultados del comando git como un error en la consola aunque la operaciĆ³n fue exitosa



subir proyecto a github visual studio 2017 (2)

Cuando ejecuto comandos de Git en PowerShell, todo funciona a la perfección, excepto una pequeña diferencia entre la consola de PowerShell y la consola de NuGet. La salida de un " git push " se muestra en el texto de error rojo en la ventana de NuGet, pero se muestra bien en la ventana de PowerShell.

Aquí hay un video que muestra la diferencia. " git push " muestra sus resultados como un error en la consola del administrador de paquetes. La operación funcionó, es molesto que la salida de la operación se muestre como un error.

Mira el video


Causa raíz: git push envía la salida a stderr, no stdout. Mira aquí , aquí .

Powershell.exe como host no se preocupa cuando las herramientas nativas envían resultados a stderr, ya que esta es una forma bastante común de imprimir no solo mensajes de error sino mensajes de estado y otras cosas. Por ejemplo, intente ejecutar algo totalmente falso

PS C:/> $result = findstr.exe q w e r t y

Findstr está enviando mensajes de error a stderr, por lo que Powershell.exe sabe que no debe asignar esa salida de "error" a su variable, pero tampoco se asusta.

El host del administrador de paquetes NuGet, por otro lado, no es tan inteligente a este respecto. Al ejecutar cualquier herramienta nativa, este host interpreta cualquier cosa en stderr como un verdadero error. De este modo, obtienes el texto rojo, los mensajes de diagnóstico, etc. Prueba el mismo ejemplo de findstr anterior en el PM, verás errores completos.

Un par de soluciones / sugerencias:

  • Use el parámetro --porcelain , que hace que la salida vaya a stdout, no a stderr .
  • Establezca $errorView = ''CategoryView'' que al menos minimizará los mensajes de error, aunque no los elimine
  • Redirigir stderr y hacer una consola simple escribir de esta manera: git push 2>&1 | write-host git push 2>&1 | write-host

Para solucionar esto y seguir trabajando con Powershell ISE, puede crear un archivo cmd con el siguiente contenido:

@echo off git.exe %1 %2 %3 %4 %5 %6 %7 %8 %9 2>&1

Y registrarlo como alias (dentro de su perfil):

Set-Alias git "git.cmd"