在ASP、C#和VB.Net中如何检索当前行号

4
ASP、C#、VB.NET是否有一种方法可以在处理命令时检索代码所在的行?
示例
1 <%
2 response.write("Your on line " & retreiveCurrentLineNumber)
3 %>

输出:你在第2行。
2个回答

6
你可以这样做:
var line = new StackFrame(0, true).GetFileLineNumber();

需要注意以下几点:

  1. 您需要确保源文件和PDB文件是可访问的。
  2. 这将获取您所在的方法的当前行,而不是精确的位置。
  3. Jit可能会执行优化,导致不正确的信息,例如方法被内联。

对于VB.NET也是同样的情况:

Dim line As Integer = New StackFrame(0, True).GetFileLineNumber()

就经典ASP而言,我认为这是不可能的。

@RetroCoder 我不相信这是可能的。 - vcsjones

1

虽然vcsjones的回答可能正是您要寻找的,但为了调试/故障排除VB.NET,您可能需要查看Err对象的Erl属性。它返回一个整数,指示上一条执行语句的行号 - 按行号计算,这意味着数字标签,而不是源文件的物理行号。

在关键点用行号标记代码有助于排除意外异常,并且无需源文件和PDB即可使Erl工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接