Hi,

Sadly, using Cecil requires a bit of knowledge about the metadata format and how the metadata is serialized.

To add a custom attribute, you have to import (ModuleDefinition.Import ()) the type of the custom attribute into the assembly in which the custom attribute will be used.

Then you have to import the appropriate constructor of the custom attribute type, to get a MethodReference you will used to instantiate a CustomAttribute object. Once you have this custom attribute, you can add it to an ICustomAttributeProvider, wich holds a collection of custom attribute.

Finally, you can write back the assembly to the disk.

Jb

On Feb 21, 2006, at 3:04 PM, vijaya raghava mutharaju wrote:

  Hi,

I was thinking if the following code would do what I was asking of

1) AssemblyDefinition assembly1 = AssemblyFactory.GetAssembly("MyAssembly.exe");
                      AssemblyDefinition assembly2 =
AssemblyFactory.GetAssembly("AnotherAssembly.exe");
                      foreach(.........)
                       {     if(type is  MyAttribute)
                             {  // Import MyAttribute into assembly2
                         }}
2) MyAttribute attribute = new MyAttribute("some arguments"); But it still leaves the issue of how to assign a proper parent(in my case a class in assembly2) to MyAttribute.

Excuse me if the above code is completely off target. Iam new to Cecil.

          Thank you.


On 2/21/06, vijaya raghava mutharaju <[EMAIL PROTECTED]> wrote:
       Hello,

I want to add custom attributes to an existing assembly. I want to do the following steps.

1) Refer the class MyAttribute which is in the assembly MyAssembly.exe, so that I can import into the current assembly - AnotherAssembly.exe 2) Add this attribute (MyAttribute constructor with proper arguments) on top of some of the classes in AnotherAssembly.exe which is the one that is to be modified. 3) Save it back to disk - I know AssemblyDefinition.SaveAssembly() can be used for that.


Please can you tell me how these steps can be done using Mono.Cecil.

           Thank you.

_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to