/// <summary> /// Makes the assembly debuggable by attaching the DebuggableAttribute /// to the Assembly. Call immediately before calling WritePEFile. /// </summary> /// <param name="allowDebug">set true to enable debugging, false otherwise</param> /// <param name="suppressOpt">set true to disable optimizations that affect debugging</param> public void MakeDebuggable(bool allowDebug, bool suppressOpt) { Type[] twoBools = new Type[] { PrimitiveType.Boolean, PrimitiveType.Boolean }; ClassRef debugRef = MSCorLib.mscorlib.GetClass("System.Diagnostics", "DebuggableAttribute"); if (debugRef == null) { debugRef = MSCorLib.mscorlib.AddClass("System.Diagnostics", "DebuggableAttribute"); } MethodRef dCtor = debugRef.GetMethod(".ctor", twoBools); if (dCtor == null) { dCtor = debugRef.AddMethod(".ctor", PrimitiveType.Void, twoBools); dCtor.AddCallConv(CallConv.Instance); } Constant[] dbgArgs = new Constant[] { new BoolConst(allowDebug), new BoolConst(suppressOpt) }; thisAssembly.AddCustomAttribute(dCtor, dbgArgs); }
/// <summary> /// Get the MethodRef equivalent to this MethodDef. If one /// does not exist, then create it. /// </summary> /// <returns>MethodRef for this MethodDef</returns> public MethodRef MakeRefOf() { if (refOf != null) { return(refOf); } ClassRef parRef = ((ClassDef)parent).MakeRefOf(); refOf = parRef.GetMethod(name, sig.parTypes); if (refOf == null) { Type rType = sig.MakeRefRetType(); Type[] pTypes = sig.MakeRefParTypes(); refOf = new MethodRef(parRef, name, rType, pTypes); refOf.defOf = this; refOf.AddCallConv(this.GetCallConv()); } return(refOf); }
/// <summary> /// Get the MethodRef equivalent to this MethodDef. If one /// does not exist, then create it. /// </summary> /// <returns>MethodRef for this MethodDef</returns> public MethodRef MakeRefOf() { if (refOf != null) return refOf; ClassRef parRef = ((ClassDef)parent).MakeRefOf(); refOf = parRef.GetMethod(name, sig.parTypes); if (refOf == null) { Type rType = sig.MakeRefRetType(); Type[] pTypes = sig.MakeRefParTypes(); refOf = new MethodRef(parRef, name, rType, pTypes); refOf.defOf = this; refOf.AddCallConv(this.GetCallConv()); } return refOf; }