14

Visual Studio でプロジェクトをビルドすると、エラーや警告を含むビルド プロセスのステータスが出力ウィンドウに出力されます。これらの行をダブルクリックすると、エディターでそのエラー/警告を含むファイルが開きます。

さて、Debug.WriteLine などからの出力でその機能を取得することは可能ですか? たとえば、デバッグウィンドウが出力するとき

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

それをダブルクリックすると、BufferClass.cs の 45 行目に移動できます。これは、Debug.WriteLine 呼び出しの場所だからです。

.net ライブラリまたは Visual Studio 拡張機能を使用して、それは可能ですか?

4

2 に答える 2

15

私は先に進み、自分でこれに答えます。

ソース ファイルに直接ジャンプできるようにするには、メッセージを次のようにフォーマットします。

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

そうすれば、Visual Studio は自動的にダブルクリック機能を追加し、ソースに直接移動します。

さらに、ここで説明されているように Visual Studio 2012 の新しい機能を使用する場合: Caller Details、次のように Log Method を実装できます。

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の色が赤または黄色になります。これについて詳しく説明している記事があれば、ぜひ知りたいです。

于 2012-09-11T11:57:37.120 に答える
5

さて、この質問 (および回答) は少し古くなっているようです。

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

終了括弧の後にコロンを含めない場合、またはファイル名と行番号の間にスペースがある場合、ソース コードにリンクされません。

于 2015-05-21T23:39:39.363 に答える