Common Compiler Infrastructure: Metadata 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.

The CCI Metadata API allows applications to efficiently analyze or modify .NET assemblies, modules, and debugging (PDB) files. CCI Metadata supports the functionality of the .NET System.Reflection and System.Reflection.Emit APIs, but with much better performance. It also provides additional functionality that is not available in either .NET API.

Important: Before you download the sources, read “Getting Started,” which discusses the advantages and limitations of the different download options.

The following links provide further information about CCI Metadata.

Documentation

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

Samples

The CCI Metadata 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 Code and AST API provides similar functionality to CCI Metadata. However, instead of representing method bodies as a flat list of MSIL instructions, the CCI Code and AST API represents method bodies with a language-independent object model that is similar source code.
  • The CCI Sample Applications project contains a set of substantial CCI Metadata and CCI AST and 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.

Last edited Dec 15, 2009 at 5:15 PM by Guy_Smith, version 37