Я пишу программу на С#, используя Visual Studio 2010, где я хочу записать определенные события в файл журнала и включить номер строки, в которой код был включен, когда это произошло.
Я нашел только два способа записи номеров строк - CallerLineNumber, для которого требуется .Net 4.5/С# 5 (я нацелен на .Net 4) и StackFrame.GetFileLineNumber, который, по-видимому, требует отладочной сборки и файла pdb для работаю правильно, и я создаю сборку релиза и файл pdb.
Но здесь то, что я не получаю - оба из вышеперечисленных решений выполняются, но номера строк - это время компиляции. Почему требуется время выполнения?
Я мог бы ввести правильный номер строки в качестве литеральной константы, просто посмотрев на нижнюю часть экрана, где он говорит что-то вроде "ln 175".,
LogEvent("It happened at line 175");
но проблема в том, что если я отредактирую код до строки 175, мой литерал может быть более правильным. Но компилятор знает правильный номер строки, и в прошлом я использовал языки программирования, которые могли бы просто ввести правильный номер строки в качестве постоянной времени компиляции. (например, ANSI C и Microsoft С++ поддерживают предопределенный макрос, называемый
_LINE_
) Есть ли способ получить С# для этого? Если нет решений для моей проблемы?