C#StackTrace:获取.net函数的文件名和行号

C#StackTrace:获取.net函数的文件名和行号,c#,debugging,filenames,line-numbers,stack-frame,C#,Debugging,Filenames,Line Numbers,Stack Frame,当我使用参数bool fNeedFileInfo=true创建一个StackTrace对象时,我从自己的代码中获取文件名和行号。但是为了更深入地分析Winforms项目,我还需要.net代码的文件名和行号。 我已经将VS 2015配置为允许单步进入.net源代码,并且我可以在Visual Studio的Stack Frame下拉字段中看到所需的信息,但我无法在调试输出的代码中以编程方式获取此信息 有没有一种方法可以通过编程方式查询堆栈帧的.net代码文件名和行号?这是不实用的。在您的开发机器上,

当我使用参数
bool fNeedFileInfo=true
创建一个
StackTrace
对象时,我从自己的代码中获取文件名和行号。但是为了更深入地分析Winforms项目,我还需要.net代码的文件名和行号。
我已经将VS 2015配置为允许单步进入.net源代码,并且我可以在Visual Studio的Stack Frame下拉字段中看到所需的信息,但我无法在调试输出的代码中以编程方式获取此信息


有没有一种方法可以通过编程方式查询堆栈帧的.net代码文件名和行号?

这是不实用的。在您的开发机器上,VS知道如何从正确的符号服务器获取所需的PDB文件。其中。您无法控制用户的框架版本。@HansPassant:我绝对不会为客户的计算机创建此代码。这完全是为了我自己分析我的代码是如何工作的。然后从符号缓存中复制你需要的PDB文件。您可以使用“调试”>“Windows”>“模块”窗格中的“跟踪”或“符号加载信息”上下文菜单命令查看它们的存储位置。@HansPassant:将它们复制到哪个位置?调试我的exe的输出文件夹?正如我所写的,我已经可以进入代码,VS告诉我行号,只是我的程序没有下一个问题是:例如System.pdb,我应该选择哪一个?符号缓存包含它的多个版本。@Hanpassant:我已将
System.pdb
System.Windows.Forms.pdb
复制到
\bin\x86\Debug\
\obj\x86\Debug\
,并且我可以在“模块”窗口中看到它们被使用(从bin文件夹中)!但是我仍然没有在调试输出中获得文件号,尽管我可以在“调用堆栈”窗口和“堆栈帧”下拉列表中看到它们。