Microsoft ResearchはCLRアセンブリのメタデータやデバッグファイルを操作するため、コンパイラや他のプログラミングツールによって使用される一連のライ ブラリを含む、Common Compiler Infrastructure: Metadata (CCI)(リンク)およびCCI: Code and ASTプロジェクト(リンク)をオープンソースにした。CCI: MetadataコンポーネントはSystem.Reflectionを組み込み、CCI: Code and ASTはSystem.CodeDomを組み込む。
実際CCIはアクセスするアセンブリをロードしないが、メタデータの読み出し/書き込みをし、それが必要とされるまで依存性アセンブリを開放しない。CLR PEファイルで作業する場合、メタデータモデルインターフェイス(Microsoft.Cci.MetadataModel)を実装するあらゆるオブジェクトに記述することがでいる。
CCI: Metadata APIは、以下を含んでいる。
- Metadata Model
- CLR PE Reader
- CLR PE Writer
- メタデータのヘルパークラス(Microsoft.Cci.MetadataHelper.dllの静的メソッド)
- Metadata Modelインターフェイス向け実装クラス
- ソースファイルと動作するSource Model
- PDBリーダー
- PDBライター
CCI: Code and ASTプロジェクトは、以下を含んでいる。
- 文および表現を読むために使用されるCode Model
- Code Modelはコードの読み取り専用のビューを提供するので修正されたコードモデルを表すMutable Code Model
- ASTノードを抽出するAST Model「ASTノードは、定義、オーバーロードの解決およびエラーのチェックに対するバインディングなどを、取り扱う。ASTコンポーネントは、付加 的なコンパイルをサポートするように設計されているが、不変のコードモデルの能率的な予測を可能にする」。
そのプロジェクトはMicrosoft ResearchチームであるRiSE(リンク)で、サポートされる。