world visual studio net hello example community code application visual-studio console-application

visual-studio - studio - visual basic.net core



Evitar "Presione cualquier tecla para continuar" al ejecutar la aplicaciĆ³n de consola desde Visual Studio (5)

Cuando se ejecuta una aplicación de consola en Visual Studio a través de "Iniciar sin depurar" ( Ctrl + F5 ), la consola permanece abierta al final de la ejecución solicitando

Pulse cualquier tecla para continuar . . .

por lo que se requiere activar la ventana y pulsar una tecla. A veces esto no es apropiado.

Por qué esto importa: en el momento en que escribo el código de serialización json, mi flujo de trabajo es el siguiente:

  • adaptar código c #
  • ejecuta una aplicación de consola que escribe el archivo out.json
  • Ver out.json en el navegador con un visor json

haga esto una y otra vez, sin necesidad de depurar nada, simplemente recortar la serialización y verificar la salida es bueno.

Es un flujo de trabajo como este, donde el comportamiento de "presionar cualquier ..." está dificultando ya que requiere los pasos

  • activar la ventana de la consola
  • pulse la tecla.

Sin respuestas:

  • Iniciar la aplicación fuera de VS en una consola separada no es una respuesta.
  • Diciendo, no necesitas esto.

¿Has probado (c #)?

Environment.Exit(0)


Bueno, al menos en Visual Studio 2010, escribiendo.

Console.ReadKey(true);

Elimina "Presionar cualquier tecla para continuar ....."


Encontré una solución que funciona si estás usando python (no pude probar nada más). Tienes que ir a

Herramientas -> Opciones -> Herramientas de Python -> Depuración

Desmarque Wait for input when process exits normally .

Espero que puedas aplicar esto de alguna manera a tu problema.


Estoy bastante seguro de que no puede afectar o cambiar este comportamiento.

Como mencionaste, no tiene nada que ver con tu aplicación en sí misma, porque no lo hace cuando haces doble clic en el EXE. Solo ve este efecto cuando ejecuta la aplicación desde Visual Studio sin el depurador adjunto.

Presumiblemente, cuando invoca Ctrl + F5 , Visual Studio ejecuta su aplicación de una manera particular que hace que la ventana de la consola permanezca abierta. Puedo pensar en dos maneras en que podría hacerlo:

%COMSPEC% /k "C:/Path/To/YourApplication.exe"

o

%COMSPEC% /c ""C:/Path/To/YourApplication.exe" & pause"

Con cualquiera de estos, el comportamiento de pausa que está viendo se integra directamente en el comando utilizado para iniciar su aplicación y, por lo tanto, es externo a su aplicación. Entonces, a menos que tenga acceso a las fuentes de Visual Studio, no lo va a cambiar. Llamar a una función de exit desde su aplicación no tendrá ningún efecto porque su aplicación ya se cerró en el momento en que aparece el mensaje.

Por supuesto, no puedo ver por qué es realmente importante, aparte de una cuestión de curiosidad. Esto no sucede cuando inicia la aplicación con el depurador adjunto, que es lo que estará haciendo el 99% del tiempo cuando inicie la aplicación desde el IDE. Y como no incluye Visual Studio junto con su aplicación, sus usuarios iniciarán la aplicación fuera de VS.

En respuesta a las actualizaciones hechas a su pregunta, la mejor solución sería cambiar su aplicación para que no sea una aplicación de consola. Este comportamiento no afecta a las aplicaciones estándar de Windows; Cuando se cierran, cierran para siempre.

Si no necesita ningún resultado en la ventana de la consola, esto es muy simple de hacer: simplemente cambie el "Tipo de aplicación" en las propiedades de su proyecto . Una aplicación de Windows Forms funcionará bien. Si no muestra una ventana (también conocida como formulario), una no se creará automáticamente. Esta es la diferencia entre las aplicaciones normales de Windows y las aplicaciones de consola, que siempre crean una ventana de consola, ya sea que la necesite o no.

Si necesita mostrar la salida en la ventana de la consola, tiene un par de opciones:

  1. Cree y use un formulario simple con un control ListBox o ListView. Cada línea que normalmente enviaría a la consola, se agrega como un nuevo elemento al control de lista. Esto funciona bien si no está utilizando ninguna de las funciones "avanzadas" de la consola.
  2. P / Invocar y llamar a la función AllocConsole para crear una consola que su aplicación de Windows pueda usar. No necesitas un formulario para esto.

Hay una gran respuesta aquí en una pregunta muy relacionada:

https://.com/a/15135181/122687

Creo que es mejor que la respuesta aceptada porque no requiere que llame a AllocConsole y configure una redirección de IO. No sé con qué facilidad y robustez se puede configurar la redirección de IO.