Well, in .Net it is called an assembly, but for your question it has the same function as a DLL or static library in Win32. An executable is usually a front end that the user executes and it can show a graphical user interface (GUI), a command line console interface or a web interface. An assembly is loaded into memory at run time and used by the executing application. What you want to achieve with a library/assembly is to compile code that is used over and over again into reusable modules. Look at all the references you add to your exe, they all contain code other people have written and you can reuse. Another way to reuse is to have compile the source code of the reusable classes into your exe, but that means that you need to have all source code available at all times. It means that every compilation might give you a slightly different functionality if you share code and someone make some changes in a class. If you use a specific version of an assembly you are pretty sure that you get what you wanted (assuming versions are used) This was a short explanation that could be much longer, and as an end note I boil it down to this: 1. No DLL's or assemblies are not obsolete. 2. Reuseability is the biggest advantage as I see it.