Almost all the capabilities of the .NET Framework are exposed via a vast set of managed types. These types are organized into hierarchical namespaces and packaged into a set of assemblies, which together with the CLR comprise the .NET platform.
Some of the .NET types are used directly by the CLR and are essential for the managed hosting environment. These types reside in an assembly called mscorlib.dll and include C#’s built-in types, as well as the basic collection classes, and types for stream processing, serialization, reflection, threading, and native interoperability.
At a level above this are additional types that “flesh out” the CLR-level functionality, providing features such as XML, networking, and LINQ. These reside in System.dll, System.Xml.dll, and System.Core.dll (new to Framework 3.5) and, together with mscorlib, they provide a rich programming environment upon which the rest of the Framework is built.
The remainder of the .NET Framework consists of applied APIs, most of which cover three areas of functionality:
User interface technologies
Distributed system technologies
Table 1-16 shows the history of compatibility between each version of C#, CLR, and the .NET Framework. Interestingly, C# 3.0 targets a new Framework version while using the same CLR version as its predecessor. To be precise, C# 3.0 targets an updated version of CLR 2.0, which is installed as part of Framework 3.5. This update is designed not to break compatibility with ...