Metadata is the key to the simpler programming model that the CLR supports. It's in binary, but the framework offers an API to export metadata to and from an XML schema or a COM type library. An XML schema export might be useful, for example, in extracting version and compile information for a repository on components. The metadata is one of the ways the CLR can support a wide variety of tools.
Compilers are some of the most extensive users of metadata.
For example, a compiler can examine a module produced by a different compiler and use the metadata for cross-language type import. It can also produce metadata about its own compiled modules, including such elements as flags that a module has compiled for debugging, or a language-specific marker. Even information that might appear in a tool tip can be embedded in metadata. This extendable data store about a compiled module greatly facilitates the simpler deployment available under the .NET Framework. An API, called the Reflection API, is available for scanning and manipulation of metadata elements.