我正在使用MS C#编译器来编译这样的方法:
[Placeholder] public extern void Method();
编译后的方法有RVA = 0
(相对虚拟地址)。
然后,使用Mono.Cecil 0.9.3,我想填写一个方法体。
我这样做:
methodDefinition.Body = new MethodBody(methodDefinition);
// emit code...
但是,在尝试保存程序集时,出现错误:
System.NullReferenceException: Object reference not set to an instance of an object.
at Mono.Cecil.Cil.CodeReader.IsInSection(Int32 rva)
at Mono.Cecil.Cil.CodeReader.MoveTo(Int32 rva)
at Mono.Cecil.Cil.CodeReader.PatchRawMethodBody(MethodDefinition method, CodeWriter writer, MethodSymbols& symbols)
at Mono.Cecil.Cil.CodeWriter.WriteUnresolvedMethodBody(MethodDefinition method)
at Mono.Cecil.Cil.CodeWriter.WriteMethodBody(MethodDefinition method)
我怎样才能让它发挥作用?
答案 0 :(得分:1)
我很惭愧地说解决方案是将Mono.Cecil升级到版本0.9.5。