Announcing the release of Common Compiler Infrastructure (CCI) – Metadata

I am very pleased to announce the availability of CCI. Herman Venter from Microsoft Research released CCI at http://ccimetadata.codeplex.com/ . CCI is a set of components (libraries) that provide some of the functionality that compilers and related programming tools tend to have in common. The metadata components provide functionality for reading, writing and manipulating Microsoft Common Language Runtime (CLR) assemblies and debug files. The functionality provided by these components subsumes the functionality provided by System.Reflection and System.Reflection.Emit.

In Sandcastle we use CCI for assembly reflection. MRefBuilder (actually, CCI) searches the current directory for dependency assemblies, as well as any directories specified by the /dep option. CCI is also used by FxCop. CCI does not attempt to open a dependency assembly until some information from that assembly is needed. We use CCI because technically, CCI never “loads” any assembly; it just parses the data in the assembly file. That is why CCI can reflect over a foreign mscorlib while System.Reflection cannot.