HI,

I am Injecting code into the MySql.Data.dll with Mono.cecil,but it doesn't 
work.It seemed to be working - if I decompile the assemblies with ILSpy 
they show the injected code is there.
I just want to add Console.WriteLine("run method Open") into Method Opne();

static void Main(string[] args)
        {
            AssemblyDefinition asm = 
AssemblyDefinition.ReadAssembly("F:\\MySql.Data.dll");
            foreach (TypeDefinition type in asm.MainModule.Types)
            {   
//           
                if (type.Name.Equals("MySqlConnection"))
                {                
                    foreach (MethodDefinition method in type.Methods)
                    {  
//                   
                        if (method.Name == "Open")
                        {                                                   
                                                    
                      var ilProcessor = method.Body.GetILProcessor();       
                                                    
                                var firstInstruction = 
ilProcessor.Body.Instructions[0];
Instruction insStr = ilProcessor.Create(OpCodes.Ldstr, "run method Ope");   
                             
                                ilProcessor.InsertBefore(firstInstruction, 
insStr);
              MethodReference refernce = 
asm.MainModule.ImportReference(typeof(Console).GetMethod("WriteLine",
              new Type[] { typeof(string) }));
                Instruction insCall = ilProcessor.Create(OpCodes.Call, 
refernce);
ilProcessor.InsertAfter(insStr,insCall);
                        }
                    }//end for MethodDefinition  
                }
            }//end for TypeDefinition            
            asm.Write("F:\\MySql.Data.dll"); 
       }

I write a test code to run the mehod "Open" ,but it doesn't print "run 
method Open" even "Console.WriteLine("run method Open");" has been in mehod 
"Open".
Can you please help me to resolve the error. 

Thanks,
Gray

-- 
-- 
--
mono-cecil
--- 
You received this message because you are subscribed to the Google Groups 
"mono-cecil" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to