从Assembly中检索PDB

时间:2013-01-30 07:37:51

标签: c# reflection

通过Assembly.Load(byte[] rawAssembly, byte[] rawSymbolStore)加载程序集后,是否可以从创建的Assembly实例中检索rawSymbolStore数据?调用转发到此方法,我无法看到它的作用..

[MethodImpl(MethodImplOptions.InternalCall)]
internal static RuntimeAssembly nLoadImage(byte[] rawAssembly, byte[] rawSymbolStore, Evidence evidence, ref StackCrawlMark stackMark, bool fIntrospection, SecurityContextSource securityContextSource);

我想要做的是将Assembly实例序列化为两个字节数组,并将它们发送到远程机器上以便加载。

1 个答案:

答案 0 :(得分:1)

  

是否可以从创建的Assembly实例中检索rawSymbolStore数据?

没有。程序集的.pdb文件是磁盘上的单独文件。它包含程序集的调试符号,通常可以在项目的构建目录中找到它。您可以将.pdb文件与.dll一起部署,但这是可选的。它仅用于在异常堆栈跟踪中显示文件+行号信息。

您必须使用类似File.ReadAllBytes()的调用来获取所需的byte []。 Assembly.Location属性应该有助于找到程序集的.pdb文件。如果你没有部署它,或者ReadAllBytes失败,那么为第二个参数传递null。