2012-09-06 43 views
10

當您在Visual Studio中生成項目時,輸出窗口會輸出生成過程的狀態,其中包括錯誤和警告。雙擊這些行將在編輯器中打開包含該錯誤/警告的文件。雙擊以在輸出窗口中輸入源

現在,是否有可能從Debug.WriteLine輸出或類似的東西獲得該功能?因此,當例如

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

調試窗口輸出我將能夠雙擊它,採取BufferClass.cs 45行,因爲這是的Debug.WriteLine調用的位置。

這是可能的,無論是通過.net庫,或通過Visual Studio擴展?

回答

12

我會繼續,然後自己回答。

爲了能夠直接跳轉到源文件,格式化你的信息是這樣的:

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

此外,加入「:錯誤」或「:警告「到最後使Visual Studio呈現紅色或黃色。 如果有任何文章進一步描述這一點,我真的很想知道。

+1

爲了在行號後添加一條消息(你可能會這樣做),你必須添加一個冒號。它將如下所示:'string.Format(「{0}({1}):{2}」,filePath,lineNumber,msg);' –

+1

官方文章:[格式化自定義生成步驟或生成事件的輸出](https://docs.microsoft.com/en-us/cpp/ide/formatting-the-output-of-a-custom-build-step-or-build-event) –

+1

博客條目:[MSBuild/Visual Studio感知錯誤消息和消息格式](https://blogs.msdn.microsoft.com/msbuild/2006/11/02/msbuild-visual-studio-aware-error-messages-and-message-formats/)(不是與之前的鏈接一樣完整/官方,但更具描述性)。 –

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

如果在結束括號之後沒有包含冒號,或者文件名和行號之間有空格,那麼將不會鏈接到源代碼。

+0

仍然適用於VS2015(C++),謝謝! – javaLover