What is DLL HELL ?
DLL Hell is a term for the complications that arise when working with
dynamic link libraries (DLLs) used with
Microsoft Windows operating systems,
[How to solve this ?
The .NET Framework must provide the following basic capabilities to solve the problems just described:
- Applications must be self-describing.
Applications that are self-describing remove the dependency on the
registry, enabling zero-impact installation and simplifying uninstall
and replication.
- Version information must be recorded and enforced. Versioning support must be built into the platform to ensure that the proper version of a dependency gets loaded at run time.
- Must remember "last known good."
When an application successfully runs, the platform must remember the
set of components—including their versions—that worked together. In
addition, tools must be provided that allow administrators to easily
revert applications to this "last known good" state.
- Support for side-by-side components.
Allowing multiple versions of a component to be installed and running
on the machine simultaneously allows callers to specify which version
they'd like to load instead of a version "forced" on unknowingly. The
.NET Framework takes side by side a step farther by allowing multiple
versions of the framework itself to coexist on a single machine. This
dramatically simplifies the upgrade story, because an administrator can
choose to run different applications on different versions of the .NET
Framework if required.
- Application isolation. The .NET
Framework must make it easy, and in fact the default, to write
applications that cannot be affected by changes made to the machine on
behalf of other applications.
http://msdn.microsoft.com/en-us/library/ms973843.aspx