VS2008 я могу получить значение номера строки @ *? - PullRequest
1 голос
/ 20 июля 2010

Сценарий:

Я недавно узнал о полезной утилите DebugView * Марка Руссиновича.
С DebugView, даже с закрытым vs2008, я могу использовать такие выражения:

System.Diagnostics.Debug.WriteLine("some text =. " + some_variable);  

Я хотел бы изменить вышеприведенное во время компиляции, чтобы включить номер строки исходного кода:

System.Diagnostics.Debug.WriteLine("nnnn: some text =. " + some_variable);  

где nnnn представляет номер строки исходного кода.

AFAIK, для этого vs2008 потребуется мета-переменная некоторого вида, например @linenumber, для текущего номера строки исходного кода времени компиляции. т.е. если оператор Debug.Writeline
находится на десятой строке, тогда такая мета-переменная будет == 10.

Таким образом, оператор отладки, такой как грубый пример выше, может использоваться в нескольких местах, и было бы легко определить местоположение исходного кода каждого оператора отладки.

ВОПРОС : существуют ли мета-переменные, на которые можно ссылаться во время компиляции ?

P.S .: Я не смог найти ответ на этот вопрос через Google, а также через функцию поиска SO.

Ответы [ 2 ]

1 голос
/ 25 ноября 2012

это лучший способ, которым я знаю, чтобы получить АКТУАЛЬНУЮ строку правильно (т.е. это правильная линия, потому что она в строке)

Debug.WriteLine(" hi there I am line number [" + (new StackTrace(new StackFrame(true)).GetFrame(0).GetFileLineNumber().ToString()) + "]");
0 голосов
/ 20 июля 2010

Несмотря на то, что я надеюсь, что есть способ получить эту информацию быстрее, вы можете получить имя файла и номер строки, используя класс StackTrace в пространстве имен System.Diagnostics:

StackTrace st = new StackTrace(new StackFrame(true));
string fileName = st.GetFrame(0).GetFileName();
string lineNumber = st.GetFrame(0).GetFileLineNumber().ToString();
string fileNameAndLineNbr = fileName + ":" + lineNumber;

System.Diagnostics.Debug.WriteLine(fileNameAndLineNbr + ": some text =. " + some_variable);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...