Дважды щелкните, чтобы перейти к исходному в окне вывода
Когда вы создаете проект в Visual Studio, окно вывода выводит статус процесса сборки, включающий ошибки и предупреждения. Двойной щелчок по этим строкам откроет файл, содержащий эту ошибку/предупреждение в редакторе.
Теперь, можно ли получить эту функциональность с выходом из Debug.WriteLine или что-нибудь в этом роде? Таким образом, когда окно Debug выводится, например,
Buffering: 13:03:20 to 13:03:21
Я мог бы дважды щелкнуть по нему и перейти к строке BufferClass.cs, строка 45, так как это было место вызова Debug.WriteLine.
Возможно ли это либо через библиотеки .net, либо через расширение Visual Studio?
Ответы
Ответ 1
Я просто продолжу и отвечу на это сам тогда.
Чтобы иметь возможность напрямую перейти к исходному файлу, отформатируйте свое сообщение следующим образом:
string.Format("{0}({1})", filePath, lineNumber);
Таким образом, Visual Studio автоматически добавит функцию двойного щелчка и приведет вас непосредственно к источнику.
Кроме того, если вы используете новую функциональность в Visual Studio 2012, как описано здесь: Сведения о вызывающем абоненте, вы можете реализовать свой метод ведения журнала, подобный этому
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 красным или желтым.
Если есть какие-либо статьи, описывающие это дальше, мне бы очень хотелось знать.
Ответ 2
Ну, этот вопрос (и ответ) выглядит немного устаревшим, поэтому позвольте мне освежить:
В Visual Studio 2013 следующий формат является единственным, который, как представляется, вызывает привязку к файлу/строке, которая повторяет сообщение:
С#:
{0}({1}): <message here>
Для C/С++ дайте этому вихрь:
#define STRINGX(x) #x
#define STRING(x) STRINGX(x)
#define MY_LOG(msg) __pragma(message(__FILE__"(" STRING(__LINE__) "): " msg))
Если вы не включаете двоеточие после конечной скобки или пробел между именем файла и номером строки, он не будет ссылаться на исходный код.