Tener la salida de una aplicación de consola en Visual Studio en lugar de la consola

StackOverflow https://stackoverflow.com/questions/2542599

  •  23-09-2019
  •  | 
  •  

Pregunta

Cuando se realiza una aplicación de consola en Java con Eclipse, veo la salida de ser puesto en una caja de texto en el propio IDE, en lugar de tener una consola apareciendo como en Visual Studio. Esto es muy útil, ya que incluso después de que el programa ha salido, todavía puedo hacer un buen uso del texto que fue escrito en ella, ya que no se borran hasta que vuelva a ejecutarlo. ¿Es posible lograr nada por el estilo con Visual Studio? Sé que en vez de hacer

System.Console.WriteLine(str);

Puedo hacer

System.Diagnostics.Debug.WriteLine(str);

pero no es exactamente lo mismo, ya que tienes una gran cantidad de "basura" en la ventana de resultados, ya que todos los símbolos cargados y tal.

Aún mejor, es posible tener todo lo hecho en el propio IDE, cuando se ejecuta la aplicación, en lugar de tener la consola en marcha?

¿Fue útil?

Solución

En las Herramientas -> Opciones de diálogo Visual Studio -> Depuración -.> Compruebe el "redirigir todas las ventana de salida de texto a la ventana Inmediato"

Otros consejos

Visual Studio Diálogo de Opciones -> Depuración -> Comprobar el "redirigir todas las ventana de salida de texto a la ventana Inmediato". A continuación, vaya a la configuración del proyecto y cambiar el tipo de "Aplicación de consola" a "Aplicación de Windows". En ese momento Visual Studio no se abre una ventana de consola más, y la salida es redirigido a la ventana Resultados de Visual Studio. Sin embargo, no se puede hacer nada "creativa", como solicitando clave o texto de entrada, o la limpieza de la consola -. Obtendrá excepciones de tiempo de ejecución

System.Diagnostics.Trace

En función de lo que los oyentes se adjunta, la salida de rastreo puede ir a la ventana de depuración, la consola, un archivo, base de datos, o todos a la vez. Las posibilidades son literalmente infinitas, como la implementación de su propia TraceListener es extremadamente simple.

Asegúrese de que la verificación " redirija toda la salida ... " casilla de verificación en la ventana de configuración de depuración:

Asegúrese de que la verificación

Se puede crear una aplicación de contenedor que se ejecuta en lugar de ejecutar directamente su verdadera aplicación. La aplicación envoltorio puede escuchar a la salida estándar y redirigir todo a Trace. A continuación, cambiar la configuración de ejecución para lanzar su envoltorio y pasar en el camino hacia la aplicación real a plazo.

También podría tener la envoltura de auto-adjuntar el depurador para el nuevo proceso si un depurador asociado a la envoltura.

Sé que esto es sólo otra respuesta, pero que pensé en escribir algo para el nuevo desarrolladores web, que podrían confundirse sobre el "Cambio a una aplicación de Windows" parte, porque creo que por defecto una aplicación MVC en visual Studio 2013 por defecto a un tipo de salida de la biblioteca de clases.

mi aplicación web por defecto se establece como un tipo de salida de la "Biblioteca de clases." Usted no tiene que cambiar eso. Todo lo que tenía que hacer era seguir las sugerencias de ir a Herramientas> Opciones> Depuración> redirigir todo el texto de la ventana de salida a la ventana Inmediato. Luego utiliza la sugerencia System.Diagnostics.Trace por Joel Coehoorn anteriormente.

Una solución simple que funciona para mí, para trabajar con la capacidad de la consola (ReadKey, cadena con formato y Arg etc) y para ver y guardar la salida:

escribo TextWriter que escriben en Console y para Trace y reemplazar el Console.Out con él.

si utiliza Diálogo -> Depuración -> Comprobar el "redirigir todas las ventana de salida de texto a la ventana Inmediato" se obtiene en la ventana Inmediato y bastante limpio

.

mi código: en el comienzo de mi código:

   Console.SetOut(new TextHelper());

y la clase:

public class TextHelper : TextWriter
    {
        TextWriter console;

        public TextHelper() {
            console = Console.Out;
        }

        public override Encoding Encoding { get { return this.console.Encoding; } }
        public override void WriteLine(string format, params object[] arg)
        {
            string s = string.Format(format, arg);
            WriteLine(s);
        }
        public override void Write(object value)
        {
            console.Write(value);
            System.Diagnostics.Trace.Write(value);
        }

        public override void WriteLine(object value)
        {
            Write(value);
            Write("\n");
        }
        public override void WriteLine(string value)
        {
            console.WriteLine(value);
            System.Diagnostics.Trace.WriteLine(value);

        }

    }

Nota: puedo reemplazar justo lo que necesitaba por lo que si usted escribe otro tipo debe reemplazar más

En su lugar, puede obtener la salida en un resultado de la prueba.

No se puede suministrar de entrada, pero se puede proporcionar fácilmente varias pruebas con diferentes argumentos de línea de comandos, cada prueba de la recogida de la salida.

Si su objetivo es la depuración, esta es una manera de bajo esfuerzo de ofrecer un escenario de depuración repetible.

namespace Commandline.Test
{
    using Microsoft.VisualStudio.TestTools.UnitTesting;

    [TestClass]
    public class CommandlineTests
    {
        [TestMethod]
        public void RunNoArguments()
        {
            Commandline.Program.Main(new string[0]);
        }
    }
}

Es hora de comprobar la última versión / s para Visual Studio, amigos. La solución más sugerido que no funcionaba para algunos de ustedes antes que el trabajo sea ahora.

En Visual Studio 2017 ( lanzamiento de la versión 15.4.2 y superior), va a Tools > Options > Debugging > General > (Check Box) Redirect all Output Window text to Immediate Window ha trabajado para mí.

Algunas notas: 1. Para ver la ventana Inmediato, asegúrese de que usted está en modo Depuración. 2. Ahora debe haber otros 3 herramientas de depuración disponibles a su disposición, a saber, la pila de llamadas, puntos de interrupción, y la ventana de comandos, como se muestra a continuación:

introducir descripción de la imagen aquí

Los mejores deseos!

Paso 1: Haga clic en el nombre del proyecto en el Explorador de soluciones y luego hacer el tipo de salida como ventana de aplicación

Paso 2: Depuración -> Opciones ..--> Depuración (Expandir) -> General -> redirigir todas las ventana de salida de texto a la ventana Inmediato

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top