How is the DLL HELL problem solved in .NET



Please read What is dll hell? interview question, before proceeding with this article.


In short, the dll hell problem is solved in .NET by signing the shared assemblies with strong name. Please follow this article, to understand the process of strong naming an assembly.

In dot net all the shared assemblies are usually in the GAC. GAC stands for Global Assembly Cache. The path for GAC is C:\[OperatingSystemDirectory]\assembly. For example on my computer the path is C:\WINDOWS\assembly. The image below shows the shared assemblies in the GAC.



Only strong named assemblies can be copied into GAC. Strong named assemblies in .NET has 4 pieces in its name as listed below.
1. Simple Textual Name
2. Version Number
3. Culture
4. Public Key Token


All these four pieces put together, is called as the fully qualified name of the assembly. In the GAC image above Accessibility assembly has a version of 2.0.0.0.


Now consider the example below:
1. I have 2 applications, Application - A1 and Application - A2 which relies on the shared assembly Accessibility.dll (Version 2.0.0.0) as shown in the image below.


2. Now, I have a latest version of Application - A2 available on the internet.

3. I download the latest version of A2 and install it on my machine.
4. This new installation copies a newer version of Accessibility.dll into the GAC with version 3.0.0.0.
5. So, in the GAC we now have 2 versions of Accessibility.dll.
6. Application - A1 continues to use Accessibility.dll (version 2.0.0.0) and Application - A2 uses Accessibility.dll (version 3.0.0.0)
7. So, now the assemblies are able to reside side by side in the GAC. For this reason dot net assemblies are also said to be supporting side by side execution.

If you can improve this answer further, please feel free to do so by submitting the form below. Thank you very much for your contribution.

36 comments:

  1. veknat,i ma very thankufull to you,you have picturesqued the dll hell problem..it s superb explnation.once agian thanku

    ReplyDelete
  2. hi,
    the explanations on this site are
    very good simple and to the point Bravo!!

    ReplyDelete
  3. i dont know .net.. but i got it

    ReplyDelete
  4. IN DLL HELL PROBLEM WHERE IS THE SHARED ASSEMBLY STORED.I STUDIED THAT SHARED ASSEMBLIES ARE IN GAC.

    ReplyDelete
    Replies
    1. shared assembly can be store in GAC if and only if it stronged name assaemly ....to know more about strong name there is full series post by Mr. Venkat

      Delete
  5. You have made it so simple to understand.
    Thanks a lot.

    ReplyDelete
  6. hi i m gaurav
    u can use very simple language to understand the question.
    and it benifit for me i learn soo much from your site

    ReplyDelete
  7. Nice article for beginners and for the expertise as well

    ReplyDelete
  8. You should have explained the problem first, then you can provide the solution. I don't find any clear explanation of the problem "DLL Hell". Allyou have provided is a solution of an Unexplained question.

    ReplyDelete
    Replies
    1. First try to understand what the question is?.Don't read the article closing your eyes.Try to understand what you are reading in thiss article.He has given the basic idea in this article and it's really nice. He has given you a link before reading this article.DLL hell Problem has been resolved with the GAC.Don't discourage others.

      Delete
    2. please first read this link
      http://venkataspinterview.blogspot.co.uk/2011/05/what-is-dll-hell-in-net.html

      Delete
    3. Bala Kiran did u contribute any blog before criticize.

      Delete
  9. Hi Venkat,

    DLL Hell solved in .net framework explanation with pictorial representation is nice which is easily understand by every one..

    ReplyDelete
  10. If latest version of A2 and installed it on my machine.How it will copy the new version of the assembly into the assebly filder witjout running the gacutil.Could u calrifty?

    ReplyDelete
  11. Thanks, its Great.
    It is exactly Ilooking looking for.
    Thank you again.

    ReplyDelete
  12. I have never seen a better explanation..

    ReplyDelete
  13. I spent many hours to get an idea on DLL problem in different websites but in vain. This site has given clear explanation. Thanks a lot

    ReplyDelete
  14. Create a web application using asp.net and ajax technology that accepts a keyword and displays 10 relevant tweets from Twitter in real-time for that keyword.

    ReplyDelete
  15. Your way of explanation is very simple and best. Thanks a ton!!!

    ReplyDelete
  16. good simple way on explaining the dll hell. thank you

    ReplyDelete
  17. this site having quality content,the soltuions for this type of questions easily understood even if they dont know .net,superb.i am wasting so many dayes in front of net to know dll hell.but with this answer i am fully satisfied

    ReplyDelete
  18. I know about assemblies and gac. But had no idea about the purpose of versioning. After reading this I got the point. Good example...

    ReplyDelete
  19. Gud Presentation!!!

    ReplyDelete
  20. I got an idea about dll hell problem. Thank u very much for the pictorial representation.
    But i have doubt after reading how the dll hell problem is solved?
    Is it that the concept of GAC was not present when the dll hell problem had occurred? If yes then where were the shared assemblies stored prior to GAC?

    ur reply will very much helpful to cler my concept.
    I hope u will post ur answer.

    ReplyDelete
    Replies
    1. Hi Sujith,

      As far as i know Prior to the concept of dll hell GAC was present but there is no version concept present.

      Delete
    2. Other than GAC we can store the Assemblies in bin folder of application

      Delete
  21. Hi
    Thanks foe clearing my concepts.


    Ashish Sharma

    ReplyDelete
  22. I got clear answer after long times.Very nice explanation.Thank u sir.

    ReplyDelete
  23. Hats off to you Sir. After reading your posts, I have learned a lot.Keep It Up!

    ReplyDelete
  24. Superb...work..easy to understand ...i had go through of may sites but...this one of best...thanx

    ReplyDelete
  25. Not only for this question, but every subject you touched, you are the master of them. I dont know how to thank you for your effort. no one does this better than you. God bless from the bottom of my heart sir.

    ReplyDelete
  26. I am 100% satisfied with your easily understandable explanation with simple examples for complicated topic that you have covered. Hats off you Sir....

    ReplyDelete

If you are aware of any other asp.net questions asked in an interview, please post them below. If you find anything missing or wrong, please feel free to correct by submitting the form below.

 
Disclaimer - Terms of use - Contact Us