Search a CodePlex project

Common Compiler Infrastructure: Code Model and AST API

Microsoft Research Common Compiler Infrastructure (CCI) is a set of libraries and an application programming interface (API) that supports some of the functionality that is common to compilers and related programming tools. CCI is used primarily by applications that create, modify or analyze .NET portable executable (PE) and debug (PDB) files.

The CCI Code Model and AST API—CCI Code, for brevity—is essentially an extension of CCI Metadata. CCI Code supports a hierarchical object model that represents code blocks in a language-independent structured form that is similar to source code and much easier to work with than raw Microsoft intermediate language (MSIL). CCI Code subsumes the functionality provided by System.CodeDom (when the latter used without code snippets or unresolved names.)

Most applications that work with code also work with metadata, so they typically use both APIs: CCI Metadata for metadata and CCI Code for code blocks.

The following links provide further information about CCI Code.

Important: Before you download the sources, read “Getting Started” which discusses the advantages and limitations of the different download options.
  • What is CCI Code? provides a brief summary of CCI Code and how it can be used in applications.
  • Getting Started describes how to enlist in the CCI Code project and build the libraries, samples, and API reference.
  • How to Contribute describes how to become a contributor.
  • FAQ answers frequently asked questions about CCI Code.
  • Unfinished Business describes possible future directions for the project.


The Documentation tab hosts a collection of wiki pages that provide general background for CCI and CCI Code, describe key CCI Code concepts and API elements, and walk you through several basic samples. The Documentation tab also describes how to obtain a complete CCI Code API reference help file.


The CCI Code source tree includes a set of basic samples that demonstrate core concepts and API usage. For information on how to obtain the source tree, see Getting Started. For more substantial samples, see the CCI Sample Applications project.

Other CCI Projects

  • The CCI Metadata API allows applications to efficiently analyze and modify a PE file’s metadata.
  • The CCI Sample Applications project contains a set of substantial CCI Metadata and CCI Code samples, which demonstrate how to use CCI to perform various useful tasks.

This project is sponsored by the Research in Software Engineering Group (RiSE) based in the Microsoft Research Redmond Laboratory.

Not affiliated with Microsoft and CodePlex
To remove your project or any question, please contact us: [email protected]