Right, how silly of me. I forgot about constructors since they can't be renamed. I'll look into those generic methods too. Thanks for your help.
On Tuesday, September 25, 2012 12:07:14 AM UTC+10, Jb Evain wrote: > > Hi. > > To begin with, you'll break constructors. > Then for generic methods, and maybe some other scenarios depending on > the compiler, you'll find MethodReference that map conceptually to a > MethodDefinition. You'd have to rename those too. > > Jb > > On Mon, Sep 24, 2012 at 9:03 AM, master131 <[email protected]<javascript:>> > wrote: > > I'm trying to rename methods inside an assembly by using the .Name > property > > inside the MethodDefinition class. Here's a small snippet of what I'm > trying > > to do. > > > >> AssemblyDefinition assembly = > >> AssemblyDefiniton.ReadAssembly("target.exe"); > >> > >> foreach(var module in assembly.Modules) > >> { > >> foreach(var type in module.Types) > >> { > >> foreach(var method in type.Methods) > >> { > >> method.Name = GenerateRandomName(); > >> } > >> } > >> } > >> > >> assembly.Write("out.exe"); > > > > > > Now, when I try running the outputted assembly, it crashes with a > > System.TypeLoadException with a message of: > >> > >> Could not load type '<namespace>.<classname>' from assembly '<assembly > >> name>, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. > > > > > > When I try to run peverify on the outputted assembly, this is what it > tells > > me: > >> > >> [IL]: Error: [<path>: <namespace>.Program::Main][offset 0x0000000B] > Unable > >> to resolve token. > >> [token 0x02000003] Type load failed. > >> [token 0x02000004] Type load failed. > >> [token 0x02000005] Type load failed. > >> [token 0x02000006] Type load failed. > > > > > > When I use the same sort of code to rename the fields and type names, it > > works perfectly fine with no problems. Any ideas as to what is > happening? > > > > -- > > -- > > mono-cecil > -- -- mono-cecil
