双击以转到输出窗口中的源

时间:2012-09-06 13:20:00

标签: visual-studio output-window

在Visual Studio中构建项目时,“输出窗口”将输出构建过程的状态,其中包括错误和警告。双击这些行将在编辑器中打开包含该错误/警告的文件。

现在,是否有可能通过Debug.WriteLine的输出获得该功能,或类似的东西?因此,当Debug窗口输出例如

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

我可以双击它并被带到第45行的BufferClass.cs,因为这是Debug.WriteLine调用的位置。

这可能是通过.net库还是通过Visual Studio扩展?

2 个答案:

答案 0 :(得分:14)

我会继续自己回答这个问题。

为了能够直接跳转到源文件,请格式化您的消息:

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

这样,Visual Studio将自动添加双击功能并将您直接带到源。

此外,如果您使用Visual Studio 2012中的新功能,如此处所述:Caller Details,您可以像这样实现日志方法:

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));
    }

此外,在末尾添加“:error”或“:warning”会使Visual Studio将其显示为红色或黄色。 如果有任何文章进一步描述,我真的很想知道。

答案 1 :(得分:4)

嗯,这个问题(和答案)似乎有点过时了,所以让我刷新一下:

在Visual Studio 2013中,以下格式是唯一一种似乎导致链接到回显邮件的文件/行的格式:

<强> C#

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

对于C / C ++,请给它一个旋转

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

如果您没有在结束括号后包含冒号,或者文件名和行号之间有空格,则将不会链接到源代码。