有没有办法获取程序集的位置原始源代码通过反射定位?
Warning,我不是在寻找程序集的当前位置,而是在编译源代码时所在的位置。
e.g.
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 文件中。它有两种基本风格,一种是从调试版本获得的完整风格,另一种是stripped您从发布版本中默认获得的一个。剥离的 .PDB 已删除文件和行号信息。特别是为了删除大多数公司认为专有的细节。
项目+属性,构建选项卡,高级按钮,调试信息设置此。 “Full”是正常的调试构建设置,“pdb-only”是生成剥离版本的默认发布构建设置。
支持读取 .PDB 文件数据库帮助 API http://msdn.microsoft.com/en-us/library/windows/desktop/ms679309%28v=vs.85%29.aspx,原汁原味。DIA SDK http://msdn.microsoft.com/en-us/library/x93ctkx8.aspx为其提供了一个更友好的 COM 包装器以及 C# 的常用选择。 CLR 也使用它,这就是您如何在异常的堆栈跟踪中查看文件+行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)