A library to inspect, modify, and create .NET programs and libraries at the CIL level without loading assemblies.
Cecil (Mono.Cecil) is a library for inspecting, modifying, and creating .NET programs and libraries at the Common Intermediate Language (CIL) level. It allows developers to analyze .NET binaries without loading assemblies via Reflection and directly manipulate metadata and IL code. This enables advanced scenarios like code weaving, obfuscation, and dynamic assembly generation.
.NET developers and tooling creators who need to perform low-level operations on assemblies, such as building analyzers, profilers, obfuscators, or code-weaving frameworks.
Cecil provides a performant, flexible alternative to Reflection for assembly manipulation, with a mature and widely adopted API. Its ability to modify binaries without loading them makes it ideal for build-time and runtime tooling where Reflection is insufficient or too heavy.
Cecil is a library to inspect, modify and create .NET programs and libraries.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables precise manipulation of Common Intermediate Language, allowing for advanced scenarios like code weaving without Reflection, as highlighted in its ability to modify IL code directly.
Analyzes .NET binaries without loading assemblies via Reflection, reducing memory usage and improving performance for tooling, as stated in the README's focus on avoiding Reflection overhead.
Maintained since 2004 under the .NET Foundation, ensuring a stable and widely-tested codebase, with a proven track record in the community.
Supports adding new metadata structures and altering existing IL, making it ideal for obfuscators and post-processors, per the README's emphasis on modification capabilities.
Users must understand .NET IL instructions and metadata, which can be a barrier compared to higher-level APIs, as the library prioritizes flexibility over convenience.
Focuses on low-level control, so common tasks might require more manual code compared to libraries like Roslyn for source-level manipulation, as admitted in its straightforward but not convenience-oriented philosophy.
Relies on a Google Group for discussion rather than comprehensive formal docs, which can slow down onboarding and troubleshooting for new users.