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.