.NET creates the illusion of a container where "everything exists" ... the FrameWork [
^],
A specific design goal of .NET and the GAC (Global Assembly Cache) was to eliminate "dll hell" caused by the need to explicitly manipulate DDL code libraries as their versions/facilities changed [
^].
Under the illusion are many millions of lines of code, and tons of files :)