¿Ves el resultado de la consola en Visual Studio 2010?

163

Estoy escribiendo un programa simple de C # con algunas salidas ( Console.WriteLine("...");). El problema es que, cada vez que lo ejecuto, no puedo ver la salida del programa en la ventana de salida.

La etiqueta "salida del programa" ya está marcada y ya redirigí todas las salidas a la ventana intermedia, pero fue en vano.

¿Cómo habilito ver la salida del programa?

No creo que el problema esté en mi código. Intenté ejecutar un programa simple que solo genera una cadena y readline "ala hello world" y todavía no puedo ver ninguna salida. El problema es si busco la salida en la ubicación incorrecta o si Visual Studio está actuando.

El debug.writemétodo tampoco funciona.

Usando debug.Write, todo funciona, aunque no antes. O algo salió mal antes de reiniciar o solo necesito tomar un descanso, de cualquier manera, todo está bien ahora. Gracias a todos por los útiles comentarios =)

r3x
fuente
77
Visual Studio está cubriendo la ventana de tu consola. Muévelo a tu otro monitor.
Hans Passant

Respuestas:

195

Puede usar el método System.Diagnostics.Debug.Writeo System.Runtime.InteropServicespara escribir mensajes en la Ventana de salida.

Richard Adnams
fuente
10
System.Diagnostics.Debug.Write (en caso de que el OP no tenga el espacio de nombres en juego)
jonsca
44
Ah cierto, estoy acostumbrado a presionar control + período :)
Richard Adnams
jonsca: tengo un espacio de nombres en juego y ¿por qué puedo usar console.writeline, quiero que mi programa escriba en la consola no solo por razones de prueba?
r3x
2
Si su aplicación es una consola, puede usar console.writeline para imprimir en la ventana de la consola o si su aplicación es una aplicación de formulario de Windows, puede usar debug.write. Consulte este enlace para obtener más información social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/…
Richard Adnams
1
interesante no lo sabía, y sí, mi aplicación es una aplicación de formulario de Windows, pero no, intenté usar la depuración. Escribe el mismo problema, se compila y todo es color de rosa, pero no puedo ver el resultado en ninguna parte
r3x
50

Aquí hay un par de cosas para verificar:

  1. Para console.Write/WriteLine, su aplicación debe ser una aplicación de consola. (haga clic con el botón derecho en el proyecto en el Explorador de soluciones, elija Propiedades y mire el combo " Tipo de salida " en la pestaña Aplicación, debe ser " Aplicación de consola " (tenga en cuenta que si realmente necesita una aplicación de Windows o una biblioteca de clases, no No cambie esto a la aplicación de consola solo para obtener el Console.WriteLine).

  2. Puede usar System.Diagnostics.Debug.WriteLinepara escribir en la ventana de salida (para mostrar la ventana de salida en VS, ir a Ver | Salida ) Tenga en cuenta que estas escrituras solo ocurrirán en una compilación donde se define el condicional DEPURACIÓN (de forma predeterminada, las compilaciones de depuración definen esto, y versiones de lanzamiento no)

  3. Puede usarlo System.Diagnostics.Trace.Writelinesi desea poder escribir en "escuchas" configurables en compilaciones sin depuración. (Por defecto, esto escribe en la ventana de salida en Visual Studio, al igual que Debug.Writeline)

JMarsch
fuente
2
No estaba viendo mi salida, pero luego me di cuenta de que tenía que ejecutar el programa en modo de depuración (F5) en lugar de Ctrl + Shift + F5. ¡Gracias!
Travis Heeter
Sin embargo, System.Diagnostics.Trace.Writeline no parece funcionar, ¿hay algo más que deba configurar para esto?
Travis Heeter
1
«1» - declaración falsa. Mono muestra la salida bien para todas las aplicaciones. «2» - ofc. El problema es que el método tampoco se envía al terminal. Por lo tanto, no se puede depurar una aplicación en la PC sin un IDE.
Hola Ángel
34

Agregue un Console.Read();al final de su programa. Evitará que la aplicación se cierre, y puede ver su salida de esa manera.

Esta es una aplicación de consola que acabo de desenterrar que se detiene después del procesamiento pero antes de salir:

class Program
{
    static void Main(string[] args)
    {
        DummyObjectList dol = new DummyObjectList(2);
        dol.Add(new DummyObject("test1", (Decimal)25.36));
        dol.Add(new DummyObject("test2", (Decimal)0.698));
        XmlSerializer dolxs = new XmlSerializer(typeof(DummyObjectList));
        dolxs.Serialize(Console.Out, dol);

        Console.WriteLine(string.Empty);
        Console.WriteLine(string.Empty);

        List<DummyObject> dolist = new List<DummyObject>(2);
        dolist.Add(new DummyObject("test1", (Decimal)25.36));
        dolist.Add(new DummyObject("test2", (Decimal)0.698));
        XmlSerializer dolistxs = new XmlSerializer(typeof(List<DummyObject>));
        dolistxs.Serialize(Console.Out, dolist);
        Console.Read(); //  <--- Right here
    }
}

Alternativamente, simplemente puede agregar un punto de interrupción en la última línea.

Vincent Vancalbergh
fuente
2
Console.ReadLine funciona tan bien, solo tiene que presionar enter para continuar donde Read toma cualquier clave estándar.
Richard Adnams
es una aplicación de formulario de Windows, y el método debug.write ni console.writeline parece funcionar
r3x
Euhm, ¿por qué estás enviando a la consola desde una aplicación de Windows Form? Sugiero que salga en un formulario o dialgbox en su lugar. O hacer una aplicación de consola ...
Vincent Vancalbergh
sí, eso ya me fue señalado, es un error estúpido de mi parte, aún así, gracias por el
aviso
Console.Read () hace que la ventana de la consola se enfoque y, por lo tanto, aparezca frente a VS. Si simplemente coloca un punto de interrupción después de una Console.Write (), la ventana Console mostrará su salida pero no tiene foco, por lo que puede no ser visible.
Nigel
21

Presione Ctrl+ F5para ejecutar el programa en lugar de F5.

waqasahmed
fuente
1
Ctrl + F5 inicia la aplicación sin depurar para que no vea nada en la ventana de salida.
Richard Adnams
66
Esto funcionó para mí; Solo quería ver qué producía el programa, no se mostraba ninguno de los resultados de la consola. Esto hizo que mantuviera la ventana de la consola abierta después de la ejecución para poder ver el resultado.
davenpcj
+1, este es el indicado, si realmente no desea depurar (muestra la consola y permite leer la salida).
mlvljr
8

System.Diagnostics.Debug.WriteLine()funcionará, pero debe buscar en el lugar correcto la salida. En Visual Studio 2010, en la barra de menú, haga clic en Depurar -> Windows -> Salida . Ahora, en la parte inferior de la pantalla acoplada junto a su lista de errores, debería haber una pestaña de salida. Haga clic en él y verifique que muestre el resultado de la secuencia de depuración en la lista desplegable.

PD: Creo que la ventana de salida se muestra en una instalación nueva, pero no me acuerdo. Si no es así, o si la cerró por accidente, siga estas instrucciones.

lordcheeto
fuente
0

Para mantener abierta la consola de Windows y no utilizar otros métodos de salida en lugar del flujo de salida estándar, vaya a Nombre de su proyecto -> Propiedades -> Linker -> Sistema.

Una vez allí, seleccione la pestaña SubSytem y marque Console (/ SUBSYSTEM: CONSOLE). Una vez que haya hecho esto, cada vez que quiera compilar use Ctrl + F5 (Iniciar sin depurar) y su consola se mantendrá abierta. :)

Alex
fuente
Creo que es aplicable a C ++, no a C # como en la pregunta.
Dmitry Fedorkov
0

Me encuentro con esto con frecuencia por alguna razón, y no puedo entender por qué esta solución no se ha mencionado:

Haga clic en VerSalida (o simplemente mantenga Ctrlpresionado W> O)

La salida de la consola aparece donde están las ventanas Lista de errores , Locales y Vigilancia .

Nota: estoy usando Visual Studio 2015.

Metodista
fuente
La ventana de Salida que menciona parece que es generada por el depurador ya que tiene muchas líneas relacionadas con la carga de ensamblajes, subprocesos que comienzan y se detienen, etc. Esto es diferente a la salida de la consola.
PeterVermont
0

Visual Studio está cubriendo por sí mismo la ventana de la consola, intente minimizar la ventana de Visual Studio que se dibujan una sobre la otra.

opsfunny
fuente
-1

En Program.cs, entre:

static int Main(string[] agrs)
{

y el resto de su código, agregue:

#if DEBUG
    int rtn = Main2(args);
    Console.WriteLine("return " + rtn);
    Console.WriteLine("ENTER to continue.");
    Console.Read();
    return rtn;
}

static int Main2(string[] args)
{
#endif
Jorge
fuente
Agregue una descripción, cómo su código resuelve el problema.
Koopakiller
-4

Puede crear 2 métodos pequeños, uno al que se puede llamar al comienzo del programa y el otro al final. También puede usar Console.Read (), para que el programa no se cierre después de la última línea de escritura.

De esta manera, puede determinar cuándo se ejecuta su funcionalidad y también cuándo existe el programa.

startProgram()
{
     Console.WriteLine("-------Program starts--------");
     Console.Read();
}


endProgram()
{
    Console.WriteLine("-------Program Ends--------");
    Console.Read();
}
joseph kachere
fuente
No veo cómo esta respuesta aporta nueva información a la pregunta ya que la posibilidad Console.Read () ya se ha mencionado anteriormente.
ForceMagic