C# MonoDevelop.AssemblyBrowser。Can';看不到方法和属性的实现。

C# MonoDevelop.AssemblyBrowser。Can';看不到方法和属性的实现。,c#,mono,monodevelop,reverse-engineering,decompiling,C#,Mono,Monodevelop,Reverse Engineering,Decompiling,我尝试使用MonoDevelop.AssemblyBrowser(在OSX 10.10上使用MonoDevelop 5.9.6)进行反编译,并查看me常用的一些类型是如何实现的。然而,我没有设法看到它们中的任何一个,因为它们中的许多都是使用atribute[MethodImpl(methodimpoptions.InternalCall)](据我所知,这意味着实现在CLR内部,如果我错了,请纠正我),或者我根本看不到任何方法或属性的主体,如本例所示(它是System.Mathf.Max(int,

我尝试使用MonoDevelop.AssemblyBrowser(在OSX 10.10上使用MonoDevelop 5.9.6)进行反编译,并查看me常用的一些类型是如何实现的。然而,我没有设法看到它们中的任何一个,因为它们中的许多都是使用atribute
[MethodImpl(methodimpoptions.InternalCall)]
(据我所知,这意味着实现在CLR内部,如果我错了,请纠正我),或者我根本看不到任何方法或属性的主体,如本例所示(它是
System.Mathf.Max(int,int):int
):

[可靠性合同(Consistency.WillNotCorruptState,Cer.Success)]
公共静态int Max(int val1,int val2);
/*正文反编译失败:
ICSharpCode.Decompiler.DecompilexException:反编译System.Int32 System.Math::Max(System.Int32,System.Int32)时出错
--->System.OverflowException:数字溢出。
at(包装器alloc)对象:AllocVector(intptr,intptr)
在ICSharpCode.Decompiler.ILAst.ILAstBuilder+StackSlot.ModifyStack(StackSlot[]堆栈、Int32 popCount、Int32 pushCount、ICSharpCode.Decompiler.ILAst.ByteCode pushDefinition)[0x00000]中:0
在:0中的ICSharpCode.Decompiler.ILAst.ILAstBuilder.StackAnalysis(Mono.Cecil.MethodDefinition methodDef)[0x00000]处
在ICSharpCode.Decompiler.ILAst.ILAstBuilder.Build(Mono.Cecil.methoddefinitionmethoddef,布尔优化,ICSharpCode.Decompiler.Decompiler.DecompilerContext上下文)[0x00000]中:0
在:0中的ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1参数)[0x00000]处
在ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(Mono.Cecil.MethodDefinition methodDef,ICSharpCode.Decompiler.DecompilerContext上下文,IEnumerable`1参数)[0x00000]中:0
---内部异常堆栈跟踪的结束---
在ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(Mono.Cecil.MethodDefinition methodDef,ICSharpCode.Decompiler.DecompilerContext上下文,IEnumerable`1参数)[0x00000]中:0
在ICSharpCode.Decompiler.Ast.AstBuilder.CreateMethodBody(Mono.Cecil.MethodDefinition方法,IEnumerable`1参数)[0x00000]中:0
在:0中的ICSharpCode.Decompiler.Ast.AstBuilder.CreateMethod(Mono.Cecil.MethodDefinition methodDef)[0x00000]处
在:0中的ICSharpCode.Decompiler.Ast.AstBuilder.AddMethod(Mono.Cecil.MethodDefinition方法)[0x00000]处
在MonoDevelop.AssemblyBrowser.DomMethodNodeBuilder+c__AnonStorey0.m__0(ICSharpCode.Decompiler.Ast.AstBuilder b)[0x00000]中:0
在MonoDevelop.AssemblyBrowser.DomMethodNodeBuilder.Decompile(Mono.TextEditor.TextEditorData,Mono.Cecil.ModuleDefinition module,Mono.Cecil.TypeDefinition currentType,System.Action`1 setData,ICSharpCode.Decompiler.DecompilerSettings)[0x00000 in:0*/
或者有时不会引发异常:

那么有人知道如何使用这些工具查看实现代码吗?我做错了什么?


谢谢。

如果抛出异常,请在此处提交一个bug:(product:Xamarin Studio)然后我会的,但问题是我认为这个异常是故意的,比如库受到了某种保护。谢谢。如果异常是“有意”的,程序仍然应该告诉您不可能对其进行反编译,并说明原因。如果引发异常,请在此处提交错误:(产品:Xamarin Studio)然后我会的,但问题是我认为此异常是有意的,比如库受到了某种保护。谢谢。如果异常是“有意的”,程序仍然应该告诉您无法反编译它,并说明原因
[ReliabilityContract (Consistency.WillNotCorruptState, Cer.Success)]
public static int Max (int val1, int val2);
/* body decompilation failed: 
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Int32 System.Math::Max(System.Int32,System.Int32)
 ---> System.OverflowException: Number overflow.
  at (wrapper alloc) object:AllocVector (intptr,intptr)
  at ICSharpCode.Decompiler.ILAst.ILAstBuilder+StackSlot.ModifyStack (StackSlot[] stack, Int32 popCount, Int32 pushCount, ICSharpCode.Decompiler.ILAst.ByteCode pushDefinition) [0x00000] in <filename unknown>:0 
  at ICSharpCode.Decompiler.ILAst.ILAstBuilder.StackAnalysis (Mono.Cecil.MethodDefinition methodDef) [0x00000] in <filename unknown>:0 
  at ICSharpCode.Decompiler.ILAst.ILAstBuilder.Build (Mono.Cecil.MethodDefinition methodDef, Boolean optimize, ICSharpCode.Decompiler.DecompilerContext context) [0x00000] in <filename unknown>:0 
  at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody (IEnumerable`1 parameters) [0x00000] in <filename unknown>:0 
  at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody (Mono.Cecil.MethodDefinition methodDef, ICSharpCode.Decompiler.DecompilerContext context, IEnumerable`1 parameters) [0x00000] in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody (Mono.Cecil.MethodDefinition methodDef, ICSharpCode.Decompiler.DecompilerContext context, IEnumerable`1 parameters) [0x00000] in <filename unknown>:0 
  at ICSharpCode.Decompiler.Ast.AstBuilder.CreateMethodBody (Mono.Cecil.MethodDefinition method, IEnumerable`1 parameters) [0x00000] in <filename unknown>:0 
  at ICSharpCode.Decompiler.Ast.AstBuilder.CreateMethod (Mono.Cecil.MethodDefinition methodDef) [0x00000] in <filename unknown>:0 
  at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethod (Mono.Cecil.MethodDefinition method) [0x00000] in <filename unknown>:0 
  at MonoDevelop.AssemblyBrowser.DomMethodNodeBuilder+<Decompile>c__AnonStorey0.<>m__0 (ICSharpCode.Decompiler.Ast.AstBuilder b) [0x00000] in <filename unknown>:0 
  at MonoDevelop.AssemblyBrowser.DomMethodNodeBuilder.Decompile (Mono.TextEditor.TextEditorData data, Mono.Cecil.ModuleDefinition module, Mono.Cecil.TypeDefinition currentType, System.Action`1 setData, ICSharpCode.Decompiler.DecompilerSettings settings) [0x00000] in <filename unknown>:0  */