Cecil is a library to generate and inspect programs and libraries in the ECMACIL format. It has full support for generics, it supports pdb and mdb debugging symbols format, and it is widely used.
In simple English, with Cecil, you can load existing managed assemblies, browse and inspect all the contained types, modify them on the fly and save back the modified assembly.
You can read the FAQ, if you have any other question, please post it on the mono-cecil mailing-list.
If you want to compile Cecil, you can read the Compilation guide, and if you want to contribute, you want to read the Coding Conventions page. If you’re looking at porting code that uses Cecil 0.6, you should read the Migration guide.
An easy way to use Cecil from your application is to get the Mono.Cecil NuGet package.