Question: What makes .NET assemblies easier to install and to de-install than COM objects?
Answer: Assemblies are self-contained entities. They contain everything that is necessary to dynamically load them, to link them to other assemblies, and to reflect on their types. It is not necessary to store information about assemblies in a global registry (as it is necessary for COM components). Installation becomes as easy as copying the assemblies to the user's disk. For de-installation the assembly files simply have to be deleted.
Since global assemblies are not only identified by their names but also by a version number, it is possible to have several assemblies with the same name but different version numbers on the disk at the same time. They can even co-exist in memory without interfering with each other. This simplifies the installation of new applications that use components of which older versions are still in use by other applications. Both the old and the new assembly can be used at the same time without getting in the way of each other.