我目前正在开发一个C#应用程序,它已经拥有了自己的日志记录.抛出异常时,异常将保存到列表中,用户可以通过列表视图查看该列表.当用户在列表视图中单击异常时,异常的堆栈跟踪将显示在文本框中.但即使我在远程计算机上执行程序,堆栈跟踪也会显示从编译应用程序的计算机到原始源文件的文件路径.
例如:
at C:\Folder1\Folder2\Class1.cs:81
at C:\Folder1\Folder2\Class2.cs:65
at C:\Folder1\Folder1\Class3.cs:21
Run Code Online (Sandbox Code Playgroud)
只显示没有文件夹的源文件会很好......
我该如何改变这种行为?
有原生解决方案吗?或者我只需要做一些字符串操作?
当任何ASP.NET项目(可能是任何.net应用程序)发生异常时,堆栈跟踪将显示开发人员计算机上的路径,即使在生产中也是如此.
怎么改呢?
引擎盖下发生了什么?
当使用dumpbin来查看我的媒体库的详细信息:
dumpbin /headers Test.dll
我看到 {{FullFolder to Test.pdb}} 是 pdb 的完整文件夹。
调试目录
Time Type Size RVA Pointer
-------- ------- -------- -------- --------
95BA9373 cv A1 000199D4 17BD4 Format: RSDS, {4AF64893-BAF4-4FF3-9343-E8D5A55E94FF}, 1, {{FullFolder to Test.pdb}}
00000000 repro 0 00000000 0
Run Code Online (Sandbox Code Playgroud)
有没有办法在 csproj 文件中排除这个?
我的 .csproj 看起来像:
<DebugType>full</DebugType>
<IncludeSource>True</IncludeSource>
<IncludeSymbols>True</IncludeSymbols>
<PdbPath>none</PdbPath>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
Run Code Online (Sandbox Code Playgroud)
似乎该PdbPath元素不再以新的(vs2017 多框架) .csproj 格式工作?