我尝试使用PDB文件将指令映射到 Mono.Cecil 中的序列点并找出方法的行号。但是任何论坛中的答案似乎都不起作用,因为无论我尝试什么,都会抛出SymbolsNotMatchingException并显示错误消息
找到符号但与程序集不匹配”。
顺便说一下,我的目标“应用程序”是一个 Unity 游戏。
这是我使用的一些代码(旁注:ProjectPath 是我的目标路径*.dll):
var resolver = new DefaultAssemblyResolver();
resolver.AddSearchDirectory(GetDLLsFolderToResolve(ProjectPath));
using var assembly = AssemblyDefinition.ReadAssembly(ProjectPath,
new ReaderParameters { ReadWrite = true, AssemblyResolver = resolver,
SymbolReaderProvider = new PdbReaderProvider(), ReadSymbols = true });
我已经在Mono.Cecil.dll和Mono.Cecil.Pdb.dll同一个文件夹,由于通过的NuGet导入Mono.Cecil能做到。此外,目标 DLL 和 PDB 也位于同一文件夹中。
有人有工作示例吗?或者知道如何解决这个错误?很乐意提供任何帮助。