what is DLL Hell and how it is solved in .NET?
Answers were Sorted based on User's Feedback
Answer / arjun jaiswal
Dll Hell refers to a set of problems caused when multiple
applications attempt to share a common component like a
dynamic link library (DLL). The reason for this issue was
that the version information about the different components
of an application was not recorded by the system.
.Net Framework provides operating systems with a Global
Assembly Cache. This Cache is a repository for all the .Net
components that are shared globally on a particular
machine. When a .Net component is installed onto the
machine, the Global Assembly Cache looks at its version,
its public key, and its language information and creates a
strong name for the component. The component is then
registered in the repository and indexed by its strong
name, so there is no confusion between different versions
of the same component, or DLL.
Is This Answer Correct ? | 360 Yes | 16 No |
Answer / imtiyaz chanderki
Windows Registry can not support the multiple versions of
same com component this is called the dll hell problem.
Dll hell problem is solved by dotnet it allows the
application to specify not only the library it needs to
run but also the version of the assembly
Is This Answer Correct ? | 177 Yes | 27 No |
Answer / vimal victor
DLL Hell :- This is a problem in loading a specific dll
(class id, version number, path etc). For example, if I
build test.dll v1.0.0.0 and deploying it in c:\MyProg. My
application App1 and App2 are using the methods in that
dll. And there is a requirement to change something in App1
and I supposed to change test.dll also for the same
requirement. Once I finished with all my changes, I will be
deploying them in the appropriate locations. Now, the older
dll will be overwritten. And my App2 will look for test.dll
of older version and since it is not there it will not
work. This is a scenario for dll hell issue.
.NET and dll hell:- .NET has a provision to specify whether
a 'Specific Version' to be loaded or not. If you check with
any dll's propery window, that has a property called
Specific Version. By default it will be false for the dll's
created by users. It means whether the specific version
alone has to be loaded for that project. If that is false,
then te runtime will load any available higher version of
dll for that project. Thus this issue has been sorted out.
Is This Answer Correct ? | 67 Yes | 13 No |
Answer / robert
DLL Hell :- This is a problem in loading a specific dll
(class id, version number, path etc). For example, if I
build test.dll v1.0.0.0 and deploying it in c:\MyProg. My
application App1 and App2 are using the methods in that
dll. And there is a requirement to change something in App1
and I supposed to change test.dll also for the same
requirement. Once I finished with all my changes, I will be
deploying them in the appropriate locations. Now, the older
dll will be overwritten. And my App2 will look for test.dll
of older version and since it is not there it will not
work. This is a scenario for dll hell issue.
.Net Framework provides operating systems with a Global
Assembly Cache. This Cache is a repository for all the .Net
components that are shared globally on a particular
machine. When a .Net component is installed onto the
machine, the Global Assembly Cache looks at its version,
its public key, and its language information and creates a
strong name for the component. The component is then
registered in the repository and indexed by its strong
name, so there is no confusion between different versions
of the same component, or DLL.
Is This Answer Correct ? | 51 Yes | 15 No |
Answer / kobra thakur
Registry of operating system is unable to support the
multiple versions of
same com component this is called the dll hell problem.
Dll hell problem is solved by dotnet it allows the
application to specify not only the library it needs to
run but also the version of the assembly
Is This Answer Correct ? | 24 Yes | 12 No |
Answer / moinuddin
Over the history of Windows, the method of tracking of DLL
usage was changed by Microsoft several times, as well as
the problem of rogue
installations that didn't play by the rules--the result was
called "DLL HELL", and the
user was the victim.
Solving DLL hell is one thing that the .NET Framework and
the CLR targeted. Under
the .NET Framework, you can now have multiple versions of a
DLL running
concurrently. This allows developers to ship a version that
works with their program
and not worry about stepping on another program. The
way .NET does this is to
discontinue using the registry to tie DLLs to appliction
and by the concept of assembly
Is This Answer Correct ? | 18 Yes | 11 No |
Answer / parthasarathi
Global assembly Cache (GAC) is a repository for all the .Net components or dll that are shared globally on a particular machine. When a .Net component or dll is installed onto the machine, the Global Assembly Cache looks at its version, its public key, and its language information and creates a strong name for the component or dll. The component or dll is then registered in the GAC and indexed by its strong name, so that even with same name of assembly could be install to GAC that will be having two different versions. Once versioning done with any assembly there will be no chance to conflict, which was earlier happening (DLL HELL).
Is This Answer Correct ? | 1 Yes | 0 No |
Answer / tarun kumar prusty
Traditionally in com component is face this problem.Means
when we developed a application using com component at first
we have to registered under the window operating system by
using a command line tool regsvr32 (dll name) it is the
first problem and another is when we register particular
versions of same com component like V1.0.0.0 it is default
version of every dll we can easily registered.If again we
change the version like v1.0.0.1 and registered again window
operating system it will be face problem i,e window registry
can't be maintained multiple versions of same com
component.To overcome this problem Microsoft has introduce a
new concept known as ASSEMBLY here is not required to
register under operating system and window can maintain
multiple versions same assembly.
Is This Answer Correct ? | 2 Yes | 2 No |
Answer / sabari
DLL Hell is nothing but overwriting the dll in the registery. If two application are installed on a single server, one installed First and the Second Installed Later and There is a dll with same name with different functionality used in both the applications, So in this case Application one works fine all the days until application two Installed on the machine. Once the Application two is installed containing the DLL with the same name as Application one Contains then In this case the application one Fails as the DLL from Application two overwites the DLL of Application one in the Registery. So Application two works fine where as Application one Fails as the DLL is missing.
Is This Answer Correct ? | 0 Yes | 0 No |
In a page there is dropdown list with the name of the cities like Bangalore,Pune,Chennai,Other and a text box that would enable the user to enter the name of the city if other is selected. How to enable validation on the text box if other is selected
What is the main function of razor in asp.net? : asp.net mvc
Describe how passport authentication works.
What is virtual directory in asp.net?
Differentiate between globalization and localization.
Describe a diffgram ? Write any one use of that?
How many types of cookies are there in asp.net?
write a sample code make use of xmltext writer
How to compare two strings with out Case sensitive ?
What is the difference between c# and .net?
Why is it important to maintain session state?
I am using SQLServer 2005. I have one table called Drivers. Every day thousands of records will be added in this table. I have to show all these records in my GridView with out applying ajax timer beacause we don't know the time limit when the new record come to the table. Sometimes it will add for 10 seconds some times 20 seconds. There by Please try without using timer or any other soultion apply for the table in sqlserver. But, i want to see all records immediately when new record comes in table. How? Thanks in advance... Ramesh