Seems to me that you got the variable index wrong. In the original code you load variable at index 2 (ldloc.2) where as in the injected IL you load at index 1 (ldloc.1)
On May 19, 11:08 am, srcKode <[email protected]> wrote: > Hi, > > I have recently started using the cecil library and have found a > recurring issue in my attempts to inject type from one assembly to > another.Quite interestingly it happens with the stloc.s and ldloc.s > Opcodes as I presume. I have compared the IL from the actual source > Type and the manipulated Type and found these differences. > > I am pasting a small part of the IL code below > ------------------------------------------- > From the Actual Method IL : > ----------------------------------------- > finally { > IL_0360: ldloc.2 > IL_0361: ldnull > IL_0362: ceq > IL_0364: stloc.s 19 > IL_0366: ldloc.s 19 > IL_0368: brtrue.s IL_0371 > IL_036a: ldloc.2 > IL_036b: callvirt instance void > [mscorlib]System.IDisposable::Dispose() > IL_0370: nop > IL_0371: endfinally > } // end handler > > ------------------------------------------ > Injected IL : > -------------------------------------- > finally { > IL_0376: ldloc.1 > IL_0377: ldnull > IL_0378: ceq > IL_037a: stloc.s > IL_037c: ldloc.s > IL_037e: brtrue.s IL_0387 > IL_0380: ldloc.1 > IL_0381: callvirt instance void > [mscorlib]System.IDisposable::Dispose() > IL_0386: nop > IL_0387: endfinally > } // end handler > > What am I doing wrong? -- -- mono-cecil
