Mscorlib contains both native and managed code.
Among other things, it contains an implementation of System.Object, which must always be present for everything to work.
It differs in that it is the only assembly that the CLR requires loading within each managed process.
Initially, a lot of “optional” material was added to “mscorlib” (things that are not technically required to run the application), because these were things that everyone would probably use. This includes things like HashTable and List.
This gave a powerful impetus. If everyone wants to use something, then it makes sense to insert it into the assembly, which everyone should download. Then you do not need to spend time collecting and linking a whole group of different assemblies.
The material in system.dll was mainly something that was not “worthy” for inclusion in mscorlib.
This trend, however, is beginning to change. CLR is making efforts to reduce the size of mscorlib. For example, a lot of material has been removed for Silverlight (to reduce download size).
I think they can do more of this kind of thing for V4 (and later), but I'm not sure about the details.
Scott Wisniewski Dec 31 '09 at 10:36 2008-12-31 10:36
source share