gpt4 book ai didi

c# - 获取程序集的原始源代码位置

转载 作者:太空狗 更新时间:2023-10-29 23:14:16 26 4
gpt4 key购买 nike

有没有办法通过反射获取程序集的原始源代码位置?

警告,我不是在寻找程序集的当前位置,而是在编译时源代码所在的位置。

例如

Given: myAssembly.dll
c:\program files\myapp\myAssembly.dll <- I'm NOT looking for this location. This is its current location.
d:\dev\myapp\main.cs <- this is the location I want; the location were the source code resided when it was compiled

我是从这个开始的,但到目前为止我还没有找到可以去哪个兔子洞来获取这些信息。

Assembly.GetExecutingAssembly().GetType("myAssembly.Main").<something>

当 .Net 中出现异常时,您通常会看到引发异常的类的名称以及原始源代码文件的完整路径。这就是我所追求的。我意识到可能需要 .pdb 符号文件才能获取此位置。

最佳答案

该信息存储在 .PDB 文件中。它有两种基本风格,一种是您从调试版本中获得的完整版本,另一种是您默认从发布版本中获得的剥离。剥离的 .PDB 已删除文件和行号信息。非常明确地删除了大多数公司认为专有的细节。

Project + Properties、Build 选项卡、Advanced 按钮、Debug Info 对此进行设置。 “Full”是正常的 Debug build设置,“pdb-only”是生成剥离版本的默认 Release build设置。

DbgHelp api 支持读取 .PDB 文件,乡土 flavor 。 The DIA SDK为它提供更友好的 COM 包装器和 C# 的常用选择。 CLR 也使用它,这就是您如何在异常的堆栈跟踪中看到文件+行。

关于c# - 获取程序集的原始源代码位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27750388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com