2012-09-06 13 views
10

Cuando construye un proyecto en Visual Studio, la Ventana de salida muestra el estado del proceso de compilación, que incluye errores y advertencias. Hacer doble clic en esas líneas abrirá el archivo que contiene ese error/advertencia en el editor.Doble clic para ir al código fuente en la Ventana de salida

Ahora, ¿es posible obtener esa funcionalidad con salida de Debug.WriteLine, o algo por el estilo? De manera que cuando las salidas de ventana de depuración por ejemplo

Buffering: 13:03:20 to 13:03:21 

que sería capaz de hacer doble clic en él y ser llevado a BufferClass.cs, línea 45, ya que era la ubicación de la llamada Debug.WriteLine.

¿Es eso posible, ya sea a través de las bibliotecas .net, o a través de una extensión de Visual Studio?

Respuesta

12

Voy a seguir adelante y responder esto por mi cuenta a continuación.

Para poder saltar directamente al archivo de origen, el formato de su mensaje como este:

string.Format("{0}({1})", filePath, lineNumber); 

De esa manera, Visual Studio añadirá automáticamente la funcionalidad de doble clic y le llevará directamente a la fuente.

Además, si se utiliza la nueva funcionalidad en Visual Studio 2012, tal como se describe aquí: Caller Details, se puede poner en práctica su método de registro de la siguiente manera:

private void LogData(string message, 
        [CallerMemberName] string callerName = "", 
        [CallerLineNumber] int lineNumber = -1, 
        [CallerFilePath] string filePath = "") 
    { 
     Debug.WriteLine(message); 
     Debug.WriteLine(string.Format(" {0}({1})", filePath, lineNumber)); 
    } 

Además, la adición de "Error" o ": advertencia "hasta el final hace que Visual Studio lo coloree de rojo o amarillo. Si hay algún artículo que describa esto aún más, me gustaría saberlo.

+1

Para agregar un mensaje después del número de línea (probablemente lo haga) debe agregar dos puntos. Se vería así: 'string.Format (" {0} ({1}): {2} ", filePath, lineNumber, msg);' –

+1

Artículo oficial: [Formatear la salida de un paso de compilación personalizado o evento de compilación ] (https://docs.microsoft.com/en-us/cpp/ide/formatting-the-output-of-a-custom-build-step-or-build-event) –

+1

Entrada del blog: [MSBuild/Visual Studio aware mensajes de error y formatos de mensaje] (https://blogs.msdn.microsoft.com/msbuild/2006/11/02/msbuild-visual-studio-aware-error-messages-and-message-formats/) (no tan completo/oficial como el enlace anterior, pero un poco más descriptivo). –

4

Bueno, esta pregunta (y respuesta) parecen ser un poco anticuado, así que permítanme refrescar:

En Visual Studio 2013, con el siguiente formato es el único que parece causar la vinculación con el archivo/línea que se hizo eco el mensaje:

C#:

{0}({1}): <message here> 

para C/C++, dar a este un torbellino:

#define STRINGX(x) #x 
#define STRING(x) STRINGX(x) 
#define MY_LOG(msg) __pragma(message(__FILE__"(" STRING(__LINE__) "): " msg)) 

Si no se incluye el colon después del paréntesis final, o hay un espacio entre el nombre del archivo y el número de línea, que no se enlazará con el código fuente.

+0

Todavía funcionan para VS2015 (C++), gracias! – javaLover

Cuestiones relacionadas