如何使用Mono.Cecil为extern方法提供方法体

时间:2011-06-25 21:20:54

标签: c# mono.cecil

我正在使用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)

我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:1)

我很惭愧地说解决方案是将Mono.Cecil升级到版本0.9.5。