不要在堆栈跟踪中显示构建机器的文件路径

我目前正在开发一个C#应用程序,它已经拥有了自己的日志记录。 抛出exception时,exception将保存到列表中,用户可以通过列表视图查看该列表。 当用户在列表视图中单击exception时,exception的堆栈跟踪将显示在文本框中。 但即使我在远程计算机上执行程序,堆栈跟踪也会显示从编译应用程序的计算机到原始源文件的文件路径。

例如:

at C:\Folder1\Folder2\Class1.cs:81 at C:\Folder1\Folder2\Class2.cs:65 at C:\Folder1\Folder1\Class3.cs:21 

只显示没有文件夹的源文件会很好…

我该如何改变这种行为?

有原生解决方案吗? 或者我只需要做一些字符串操作?

您可能已经安装了应用程序的.pdb文件。 如果没有.pdb文件,则不应显示文件位置。

查看Windows服务中exception堆栈跟踪中的获取行号

并在没有pdb的堆栈跟踪中包含行号?

除非捆绑PDB,否则无法直接从应用程序获取带有行号的堆栈跟踪。

文件路径包含在“ 程序数据库 ”文件(.pdb)中。 这些文件是在编译期间创建的,这些文件中的路径与编译机器上的路径相同。

您可以从安装中删除.pdb文件,但这样您的堆栈跟踪将只是现在的一半,因为它不会告诉您发生错误的行。 通常,您不会在附加了Pdb文件的生产环境中运行代码。

如果要保留“有趣的堆栈跟踪”,可以在调用exceptionObject.toString()之后考虑对文件夹名称进行字符串替换。