繁体   English   中英

C# System.Diagnostics.StackFrame.GetFileName 总是返回 null

[英]C# System.Diagnostics.StackFrame.GetFileName always return null

我使用以下代码来获取源代码文件的名称

StackTrace trace = new StackTrace(true);
string fileName = string.Empty;
foreach (var frame in trace.GetFrames())
{
    string fileToCheck = frame.GetFileName();
    if (someLogicToCheckTheSuitableFile())
    {
        fileName = fileToCheck;
        break;
    }
}

当我在本地服务器上运行它时,它运行良好。 但是当我在我的 linux 服务器上尝试它时,function“GetFileName”总是返回 null。 有人可以给我一个建议吗?

StackFrame.GetFileName 方法

public virtual string? GetFileName ();

获取包含正在执行的代码的文件名。 此信息通常是从可执行文件的调试符号中提取的。 资源

您可以在此处找到完整示例

在构建应用程序后,VS 创建了 pdb 文件(在发布或调试中),其中包含有关代码调用和代码文件链接的信息。 此信息存储在与可执行文件位于同一文件夹中的 ***.pdb 文件中。 您可以试验您的应用程序(或我在2中链接的 MS 示例):在调试/发布中构建它,并使用 *.pdb 文件从 cmd/PS 运行应用程序,而无需。 当 pdb 文件存在时 - 您将看到代码文件的链接,在您删除 pdb 文件后 - 不会显示有关您的代码的信息。

您可以禁用/启用创建 pdb 文件,如此所述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM