CHAPTER 1 THE PHILOSOPHY OF .NET
Figure 1-6. Many .NET libraries reside in the GAC
Depending on the development tool you are using to build your .NET applications, you will have
various ways to inform the compiler which assemblies you want to include during the compilation cycle.
You’ll examine how to do so in Chapter 2, so I’ll hold off on the details for now.
Note Beginning with .NET 4.0, Microsoft has opted to isolate .NET 4.0 and .NET 4.5 assemblies in a unique
location, which is independent from C:\Windows\Assembly. Chapter 14 will address this point in detail.
Exploring an Assembly Using ildasm.exe
If you are beginning to feel a tad overwhelmed at the thought of gaining mastery over every namespace
in the .NET platform, just remember that what makes a namespace unique is that it contains types that
are somehow semantically related. Therefore, if you have no need for a user interface beyond a simple
Console Application, you can forget all about the desktop and web namespaces (among others). If you
are building a painting application, the database namespaces are most likely of little concern. Like any
new set of prefabricated code, you learn as you go.
The Intermediate Language Disassembler utility (ildasm.exe), which ships with the .NET
Framework 4.5 SDK, allows you to load up any .NET assembly and investigate its contents, including the
associated manifest, CIL code, and type metadata. This tool allows a programmer to dive deeply into
how their C# code maps to CIL, and ultimately helps one understand the inner workings of the .NET
platform. While you never need to use ildasm.exe to become a proficient .NET programmer, I highly
recommend you fire up this tool from time to time to better understand how your C# code maps to
runtime concepts.
28