2017-09-05 55 views
1

我有一个应用程序在数据库中写入/记录Exception。当我使用Visual Studio运行项目时,所有代码都可以正常工作。但是当我编译或当我创建安装程序并安装到我的电脑。 FileNameLineNumber为空。C#异常没有返回文件名和LineNumber

我使用下面的代码:

var sTrace = new StackTrace(sqlEx, true); 
if (sTrace != null) 
    { 
    // var frame = sTrace.GetFrame(sTrace.FrameCount - 1); 
    var frame = sTrace.GetFrames().Last(); 
    LineNumber = frame.GetFileLineNumber(); 
    SrcFileName = frame.GetFileName(); 
    MethodName = frame.GetMethod().ReflectedType.FullName + "." + frame.GetMethod().Name; 
    } 
+1

.pdb是否包含在您的安装程序中? –

+0

我不这么认为,当我打开Program Files文件夹时,我看不到任何.pdb文件。 – Zhyke

回答

2

调试版本往往包含* .pdb文件,其中包括行号/文件信息。通常,对于“生产”或“安装程序”版本,您不倾向于输出这些文件。

如果你需要这些信息,没有什么可以阻止你在你的安装程序中包含pdb的。

+0

谢谢,我试过配置项目,它仍然没有生成.pdb文件。我在这个链接中遵循了答案。 https://stackoverflow.com/questions/628565/display-lines-number-in-stack-trace-for-net-assembly-in-release-mode – Zhyke

+0

我已经解决了它。创建安装程序时,我在应用程序文件夹中添加了调试符号。谢谢。 – Zhyke