An Introduction to the Common Compiler Infrastructure
The Common Compiler Infrastructure (CCI) is a set of libraries and associated application programming interfaces (APIs) that provide a flexible and efficient way to work with the contents of .NET portable executable (PE) files, such as assemblies or modules,
and debugging files (PDBs). CCI supports several important scenarios, including.
- Static analysis tools, which analyze PE files for purposes such as:
- Checking for poor programming practices and potential bugs. For example,
FxCop is based on CCI.
- Extracting information from the metadata. For example,
SandCastle uses CCI to extract metadata from assemblies and uses the information to create an API reference help file (CHM) for the assembly.
- Rewriting tools, which modify an assembly’s code or metadata for purposes such as:
- Inserting tracing code.
- Inserting performance instrumentation.
- Inserting security-related data.
- Optimizing compiled code beyond what is provided by the standard compilers.
- Compiler generation tools, sometimes referred to as
The CCI documentation focuses on static analysis and rewriting tools. CCI simplifies the process of writing such tools, in part by providing a more efficient implementation of the functionality supported by
, and System.CodeDom
. However, CCI goes beyond that functionality to provide a unified framework for static analysis and rewriting of assembly metadata and code.
This document provides a general introduction to CCI, with the following topics
For details on how to obtain CCI, see
Next: PE Basics