c# depuración - ¿Escribir en la ventana de salida de Visual Studio?




está proyecto (10)

Agregue el espacio de nombres System.Diagnostics y luego puede usar Debug.WriteLine() para imprimir rápidamente un mensaje en la ventana de resultados del IDE. Para más detalles, por favor refiérase a estos:

Estoy tratando de escribir un mensaje en la ventana de salida para fines de depuración. Busqué una función como system.out.println("") Java. Intenté Debug.Write , Console.Write y Trace.Write . No da un error, pero tampoco imprime nada.

Las opciones "Definir constante DEBUG" y "Definir constante TRACE" están marcadas.

La opción Herramientas de menú → OpcionesDepuración"Redirigir todo el texto de la ventana de salida a la ventana inmediata" no está marcada.

Configuración: Activa (depuración)

Nota: creé un proyecto con el asistente como "Aplicación de Windows Forms" si es relevante. No tengo idea de dónde mirar.


Para mí, solo el espacio de nombres Trace y no el de depuración funcionó:

System.Diagnostics.Trace.WriteLine("message");

Estoy trabajando en un proyecto de C # en Visual Studio 2010.


Lo siguiente me funcionó en Visual Studio 2015 :

OutputDebugStringW(L"Write this to Output window in VS14.");

Lea la documentación de OutputDebugStringW here .

Tenga en cuenta que este método solo funciona si está depurando su código ( debug mode )


La llamada

System.Diagnostics.Debug.WriteLine("message");

falla al trabajar con .NET Core (V 1.0 o 1.1).

Se supone que debemos crear y usar un registrador de Microsoft.Extensions.Logging , pero ese registro solo aparece en la ventana de la consola emergente dotnet.exe, no en la ventana de resultados de Visual Studio.


Esto requiere un marco de trabajo de terceros, a saber, Serilog , pero no obstante, he encontrado que es una experiencia muy fluida para obtener resultados en algún lugar donde pueda verlos.

Primero necesitas instalar el fregadero Trace de Serilog. Una vez instalado, necesita configurar el registrador de esta manera:

Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Trace()
    .CreateLogger();

(Puede establecer un nivel mínimo diferente o establecerlo en un valor de configuración o en cualquiera de las funciones normales de Serilog. También puede configurar el registrador de Trace en un nivel específico para anular las configuraciones, o como quiera hacerlo).

Luego simplemente registra los mensajes normalmente y se muestran en la ventana de resultados:

Logger.Information("Did stuff!");

Esto no parece ser tan importante, así que permítame explicarle algunas ventajas adicionales. El más importante para mí fue que podía iniciar sesión simultáneamente en la ventana de resultados y en la consola :

Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Trace()
    .WriteTo.Console(standardErrorFromLevel: LogEventLevel.Error)
    .CreateLogger();

Esto me dio una gran flexibilidad en términos de cómo consumí el resultado, sin tener que duplicar todas mis llamadas a Console.Write con Debug.Write . Al escribir el código, podría ejecutar mi herramienta de línea de comandos en Visual Studio sin temor a perder mi salida cuando salió. Cuando lo había implementado y necesitaba depurar algo (y no tenía Visual Studio disponible), la salida de la consola estaba disponible para mi consumo. Los mismos mensajes también se pueden registrar en un archivo (o cualquier otro tipo de receptor) cuando se ejecuta como una tarea programada.

La conclusión es que usar Serilog para hacer esto hizo que sea realmente fácil volcar los mensajes a una multitud de destinos, asegurando que siempre podría acceder fácilmente a la salida, independientemente de cómo lo ejecuté.

También requiere una configuración y un código muy mínimos.


    Debug.WriteLine

es lo que buscas.

Si no, trata de hacer esto:

Herramientas de menú → OpcionesDepuración → deseleccionar Enviar salida a Inmediato .


Esto escribirá en la ventana de salida de depuración:

using System.Diagnostics;

Debug.WriteLine("Send to debug output.");

Imprimir en la ventana de salida de Visual Studio:

Debug.Writeline();

Utilizar:

System.Diagnostics.Debug.WriteLine("your message here");

Por lo que sé, la única forma de hacerlo en VS2010 es similar al método de arrastrar y soltar. Haga clic derecho en la solución a la que desea agregar un proyecto. El menú de la aplicación tendrá un elemento agregar ... Al abrir eso, encontrará que una de las opciones es agregar un proyecto existente a la solución.

En el cuadro de diálogo que se abre, navegue a la carpeta que contiene el archivo de proyecto para la solución y selecciónelo. VS, como parte de la importación de ese archivo de proyecto, también importará el directorio completo y, asumo cualquier directorio subordinado que sea parte de ese proyecto.

Como esto requiere un archivo de proyecto existente, no será imposible importar un árbol de directorios hasta que ese árbol se haya convertido en un proyecto.





c# visual-studio-2010 visual-studio debugging