If you are .NET developer, you might have heard about the side-by-side execution. What the hack is that?
Side-by-side execution is the ability to store and execute multiple versions of an application or component on the same computer. This means that you can have multiple versions of the runtime, and multiple versions of applications and components that use a version of the runtime, on the same computer at the same time. Side-by-side execution gives you more control over what versions of a component an application binds to, and more control over what version of the runtime an application uses.
Support for side-by-side storage and execution of different versions of the same assembly is an integral part of strong naming and is built into the infrastructure of the runtime. Because the strong-named assembly's version number is part of its identity, the runtime can store multiple versions of the same assembly in the global assembly cache and load those assemblies at run time.
Although the runtime provides you with the ability to create side-by-side applications, side-by-side execution is not automatic. For more information on creating applications for side-by-side execution, see Programming Implications of Side-by-Side Execution.
In the nutshell, side-by-side is, say if you have some application requiring assembly version 18.104.22.168 to run properly and some of your application requires same file but having version 22.214.171.124 then you can have both assemblies on your computer and at the same time, you can have both running, using different assemblies at runtime :-)